JavaScript的Action / Action-api?

时间:2013-04-30 07:01:48

标签: javascript jquery asynchronous action

是否有任何现有的api /代码用于处理和链接长时间运行" async" javascript函数?

首先,我不认为js中有任何asynch函数这样的东西吗?我想唯一的asynch api是jQuery使用的http请求,还是我错了?

无论如何,当使用jQuery首先例如ping一个服务器,然后登录,然后加载一堆项目等,如果你知道我的话,将这些函数包装在彼此完成的处理程序中并不是很漂亮的意思。

我现在所做的是定义一个具有某种链表功能的Task-class,带有task.next-property等。当我链接这些并在第一次执行task.run时,我设计了它这样就可以运行每个任务,并在调用完成处理程序时运行task.next任务等。

这种方法很好,但是我想知道是否有任何现有的更完整的api用于我已经应用的那个?

也许支持取消,进度,异常聚合等?

也许有类似异步/等待任务的计划,就像在C#中现在一样,但在js中?

1 个答案:

答案 0 :(得分:0)

如果您正在使用浏览器,则可以使用setTimeout ..并将代码分解为函数,每次迭代从堆栈/队列中取出一个,然后执行该部分..还有Web worker ... < / p>

如果您正在使用服务器端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!");
});