JavaScript的任务/动作API?
问题描述:
是否有任何现有的API /代码来处理和链接长时间运行的“异步”JavaScript函数?JavaScript的任务/动作API?
首先,我不认为有任何这样的事情在js中的异步函数?我猜唯一的异步api是jQuery使用的http请求还是我错了?无论如何,当首先使用jQuery来ping一个服务器,然后登录,然后加载一堆物品等,如果你知道我的意思,将这些函数包装在其他完成处理程序中并不是很漂亮。
我现在所做的是定义一个具有某种链接列表功能的任务类,并具有task.next属性等。当我链接这些并在第一个执行task.run时,我设计了它使每个任务运行,当它的完成处理程序被称为它运行task.next任务等
这工作正常,但我想知道是有任何现有的更完整的apis为此allready在那里我应该使用?
Maybee支持取消,进度,异常汇总等?
也许有计划类似的异步/等待任务,因为现在在C#中,但在JS?
答
如果你的目标是浏览器,你可以使用setTimeout ..并将你的代码分解成函数,每次迭代从堆栈/队列中取出一个,然后做这个部分..也有web工作者......
如果你在做服务器端的JS(比如NodeJS),那么有库可以使异步任务更容易管理。在浏览器中所花费的工作......你会基本上是要创建的任务包,并解决它们..
function processBundle(tasks, callback) {
var hnd = setTimeout(doWork, 20);
function doWork() {
var item = tasks.shift();
item();
return (
tasks.length
? setTimeout(doWork, 20)
: callback()
);
}
}
//using it...
var items = [];
items.push(simpleFunction1);
...
items.push(simpleFunctionN);
processBundle(items, function(){
alert("done!");
});
你有没有在这方面做了任何研究吗?你见过[jquery defered](http://api.jquery.com/category/deferred-object/)或[q](https://github.com/kriskowal/q)或[taks.js](http ://taskjs.org/)?甚至有一个[spec](http://wiki.commonjs.org/wiki/Promises/A)... – nemesv 2013-04-30 07:07:23
不,我问你;)对不起,我搜查了但可能太累太了解。 – 2013-04-30 08:01:33