我想执行许多操作,这些操作将异步执行(使用'完成'回调将数据发送到服务器)。然后我想在所有这些任务完成时触发事件。像没有线程的线程连接之类的东西。我编写了以下帮助函数,它可以实现我想要的功能:
// 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不是多线程的。)
答案 0 :(得分:1)
jQuery Deferred / Promise方法就是这样做的。