Библиотека соединения потоков Javascript?

#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 делают именно это.

http://api.jquery.com/category/deferred-object/