2

我在思考如何使 Dojo Deferred 为以下场景工作时遇到了麻烦。基本上我有一个函数应该循环遍历多个项目并以延迟方式分别处理每个项目。它在一个单独的方法中处理每个项目,该方法在完成时返回一个 Deferred。我希望能够执行循环以关闭并处理每个项目,并在完成后报告成功或失败。到目前为止,这是我得到的测试样本:

http://jsfiddle.net/Ayyoudy/mgv6Y/12/

我究竟做错了什么?我期望输出数字是按顺序排列的,但它们不是。

我还希望能够检测处理其中一个项目是否存在错误,如果是,则不处理其余项目。

谢谢

4

1 回答 1

2
  1. 我已经解决了输出编号应该按顺序排列。http://jsfiddle.net/granjoy/mgv6Y/17/ 您的代码中有几个问题

    • 循环函数应该使用闭包来保存变量。
    • 您现在应该使用 validate 返回的 Deferred 流程 Deferred
  2. 鉴于 process() 函数将立即完成,因此日志“已完成所有处理!” 将是第一个输出。

编辑:

我已经从这个问题中学到了。谢谢,作者提供了另一个很好的解决方案。http://jsfiddle.net/Ayyoudy/mgv6Y/14

于 2012-01-12T09:20:17.403 回答