0

是否有任何现有的 api/代码用于处理和链接长期运行的“异步”javascript 函数?

首先,我认为 js 中没有异步函数之类的东西,对吧?我猜唯一的异步 api 是 jQuery 使用的 http-request 还是我错了?

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

我现在所做的是定义一个具有某种链表功能的任务类,具有 task.next-property 等。当我链接这些并首先执行 task.run 时,我已经设计了它,以便每个任务运行,当它的完成处理程序被调用时,它运行 task.next 任务等。

这工作正常,但我想知道是否有任何现有的更完整的 api 用于我应该使用的所有这些?

支持取消、进度、异常聚合等的Mayee?

也许现在有与 C# 中类似的异步/等待任务的计划,但是在 js 中呢?

4

1 回答 1

0

如果您的目标是浏览器,您可以使用 setTimeout.. 并将您的代码分解为函数,每次迭代都会从堆栈/队列中取出一个,并完成该部分.. 还有网络工作者......

如果您正在做服务器端 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!");
});
于 2013-04-30T07:15:39.857 回答