Switching to lodash's debounce
This commit is contained in:
463
dist/scorm-again.js
vendored
463
dist/scorm-again.js
vendored
File diff suppressed because one or more lines are too long
2
dist/scorm-again.js.map
vendored
2
dist/scorm-again.js.map
vendored
File diff suppressed because one or more lines are too long
39
dist/scorm-again.min.js
vendored
39
dist/scorm-again.min.js
vendored
File diff suppressed because one or more lines are too long
8
package-lock.json
generated
8
package-lock.json
generated
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "scorm-again",
|
"name": "scorm-again",
|
||||||
"version": "1.1.4",
|
"version": "1.3.0",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -6535,6 +6535,12 @@
|
|||||||
"integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=",
|
"integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"lodash.debounce": {
|
||||||
|
"version": "4.0.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
|
||||||
|
"integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"lodash.defaults": {
|
"lodash.defaults": {
|
||||||
"version": "4.2.0",
|
"version": "4.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
"grunt-mocha-test": "^0.13.3",
|
"grunt-mocha-test": "^0.13.3",
|
||||||
"jsdoc": "^3.6.4",
|
"jsdoc": "^3.6.4",
|
||||||
"jsdoc-babel": "^0.5.0",
|
"jsdoc-babel": "^0.5.0",
|
||||||
|
"lodash.debounce": "^4.0.8",
|
||||||
"minifyify": "^7.3.5",
|
"minifyify": "^7.3.5",
|
||||||
"minimist": "^1.2.5",
|
"minimist": "^1.2.5",
|
||||||
"mocha": "^8.0.1",
|
"mocha": "^8.0.1",
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import {ValidationError} from './exceptions';
|
|||||||
import ErrorCodes from './constants/error_codes';
|
import ErrorCodes from './constants/error_codes';
|
||||||
import APIConstants from './constants/api_constants';
|
import APIConstants from './constants/api_constants';
|
||||||
import {unflatten} from './utilities';
|
import {unflatten} from './utilities';
|
||||||
|
import debounce from 'lodash.debounce';
|
||||||
|
|
||||||
const global_constants = APIConstants.global;
|
const global_constants = APIConstants.global;
|
||||||
const scorm12_error_codes = ErrorCodes.scorm12;
|
const scorm12_error_codes = ErrorCodes.scorm12;
|
||||||
@@ -920,31 +921,6 @@ export default class BaseAPI {
|
|||||||
'The storeData method has not been implemented');
|
'The storeData method has not been implemented');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* A debounce function to throttle calls to LMS commit API
|
|
||||||
*
|
|
||||||
* @param {function} func
|
|
||||||
* @param {number} wait
|
|
||||||
* @param {boolean} immediate
|
|
||||||
* @return {function(...[*]=)}
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
_debounce(func, wait, immediate = false) {
|
|
||||||
let timeout;
|
|
||||||
return function(...args) {
|
|
||||||
const later = () => {
|
|
||||||
timeout = null; // added this to set same behaviour as ES5
|
|
||||||
// eslint-disable-next-line no-invalid-this
|
|
||||||
if (!immediate) func.apply(this, args); // this is called conditionally, just like in the ES5 version
|
|
||||||
};
|
|
||||||
const callNow = immediate && !timeout;
|
|
||||||
clearTimeout(timeout);
|
|
||||||
timeout = setTimeout(later, wait);
|
|
||||||
// eslint-disable-next-line no-invalid-this
|
|
||||||
if (callNow) func.apply(this, args);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send the request to the LMS
|
* Send the request to the LMS
|
||||||
* @param {string} url
|
* @param {string} url
|
||||||
@@ -952,8 +928,7 @@ export default class BaseAPI {
|
|||||||
* @return {object}
|
* @return {object}
|
||||||
*/
|
*/
|
||||||
processHttpRequest(url: String, params) {
|
processHttpRequest(url: String, params) {
|
||||||
const debounced = this._debounce(
|
const process = function(url, params, settings, error_codes) {
|
||||||
function(url, params, settings, error_codes) {
|
|
||||||
const genericError = {
|
const genericError = {
|
||||||
'result': global_constants.SCORM_FALSE,
|
'result': global_constants.SCORM_FALSE,
|
||||||
'errorCode': error_codes.GENERAL,
|
'errorCode': error_codes.GENERAL,
|
||||||
@@ -1014,9 +989,15 @@ export default class BaseAPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}, 5000);
|
};
|
||||||
|
|
||||||
|
if (typeof debounce !== 'undefined') {
|
||||||
|
const debounced = debounce(process, 5000);
|
||||||
|
|
||||||
return debounced(url, params, this.settings, this.error_codes);
|
return debounced(url, params, this.settings, this.error_codes);
|
||||||
|
} else {
|
||||||
|
return process(url, params, this.settings, this.error_codes);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user