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

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

我在做什么错?我期望输出数字是按顺序排列的,但不是。

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

谢谢

有帮助吗?

解决方案

  1. 我确定输出数字应按顺序排列。 http://jsfiddle.net/granjoy/mgv6Y/17/ 您的代码中有几个问题

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

      编辑:

      我从这个问题中学到了东西。谢谢,作者给出了另一个好的解决方案。 http://jsfiddle.net/Ayyoudy/mgv6Y/14

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top