раз в 1 секунду.
var F = function() {
};
F.prototype = {
// Время следующего запроса
nextTimeQuery: 0,
// Выполняет код с задержкой
delay: function(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
},
// Добавляет в очередь
_: function(args) {
// Текущее время
var timeNow = new Date()-0;
// Высчитываем когда выполнить запрос
var ms = this.nextTimeQuery - timeNow;
// Если прошло больше секунды с предыдущего запроса
// то выполняем новый запрос без задержки
ms = ms < 0 ? 0 : ms;
// Сохраняем время для следующего запроса
this.nextTimeQuery = QUERY_INTERVAL + timeNow + ms;
// Ставим запрос в очередь
return this.delay(ms).then(() => this['_'+args.callee.name].apply(this, args));
},
// Send
send: function() { return this._(arguments) }, _send: function() {
console.log(new Date()-0);
console.log(arguments);
console.log('----------');
return;
}
};
var f = new F();
f.send(1);
f.send(2);
f.send(3);
кек, ну тебе тут прокси нужен
class Test { send = debounce(function () { … }, 1000) } ??
задача реализовать очередь? Или обычный throttle или debounce?
очередь и с возвращением промиса
+чтобы можно было вписать сколь угодно методов
https://www.npmjs.com/package/js-queue
лол, еще бы плагин jquery
а как ты промис несколько раз зарезолвишь?
посмотри как я сделал
это не жиквери
jquery - это мем
Обсуждают сегодня