#javascript #multithreading #dom-events
#javascript #многопоточность #dom-события
Вопрос:
Я хочу выполнить ряд действий, которые будут выполняться асинхронно (отправка данных на сервер с «завершенным» обратным вызовом). Затем я хочу вызвать событие, когда все эти задачи будут выполнены. Что-то вроде соединения потоков без потоков. Я написал следующую вспомогательную функцию, которая делает то, что я хочу:
// A quick fake for thread joining.
// Allow objects to add and remove themselves. Once they are all removed, call the callback with the context.
function Waiter(callback, context)
{
this.tarriers = [];
this.callback = callback;
this.context = context;
this.add = function(tarrier)
{
this.tarriers.push(tarrier);
}
this.remove = function(tarrier)
{
this.tarriers = _.without(this.tarriers, tarrier);
if (this.tarriers.length == 0)
{
this.callback(this.context);
}
}
return this;
}
Но я чувствую себя немного неловко из-за изобретения колеса заново. Есть ли библиотека, которую я могу использовать, которая делает подобные вещи (плюс, возможно, другие связанные вещи) для меня?
(Я знаю, что JS не является многопоточным.)
Ответ №1:
Методы jQuery Deferred / Promise делают именно это.