@beisen/ethos
Version:
beisencloud pc react components
30 lines (22 loc) • 762 B
JavaScript
;
(function () {
"use strict";
exports.Promise = require('es6-promise').Promise;
module.exports = function (func, wait, immediate) {
var timeout;
return function () {
var context = this,
args = arguments;
return new exports.Promise(function (resolve) {
var later = function later() {
timeout = null;
if (!immediate) resolve(func.apply(context, args));
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) resolve(func.apply(context, args));
});
};
};
})();