Javascript'线程加入'库?

时间:2011-10-12 14:54:09

标签: javascript multithreading javascript-events

我想执行许多操作,这些操作将异步执行(使用'完成'回调将数据发送到服务器)。然后我想在所有这些任务完成时触发事件。像没有线程的线程连接之类的东西。我编写了以下帮助函数,它可以实现我想要的功能:

// 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 个答案:

答案 0 :(得分:1)

jQuery Deferred / Promise方法就是这样做的。

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