2012-01-12 108 views
2

我在围绕如何为以下方案制作Dojo延迟工作时遇到了困难。基本上我有一个功能,应该循环通过一些项目,并以延迟的方式分别处理每个项目。它在一个单独的方法中处理每个项目,并在完成时返回一个Deferred。我希望能够执行循环以关闭并处理每个项目,并在完成时报告成功或失败。以下是我走到这一步,作为测试样本:Dojo延迟链接

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

我在做什么错?我期待输出的数字是顺序的,但它们不是。

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

感谢

回答

2
  1. 我有决心,输出数量应该按顺序排列。 http://jsfiddle.net/granjoy/mgv6Y/17/ 有是在你的代码

    • loopping函数应使用闭包保持着可变几个问题。
    • 您应该使用返回递延现在的过程递延
  2. 鉴于过程()函数将立即完成了验证,所以日志“处理完一切!”将首先输出。

编辑:

我有问题学习。谢谢,作者给出了另一个好的解决方案。 http://jsfiddle.net/Ayyoudy/mgv6Y/14

+0

谢谢你。我只是看不到结果是如何排列的,因为日志已经遍布整个地方。我喜欢你关闭功能的想法。我期望输出结果如下: 完成1,完成2,完成3,完成4,完成5,完成6,完成7,完成8,完成8,完成9,完成10,完成处理所有内容 – Ayyoudy 2012-01-12 09:41:00

+0

完全是关于数学函数validate()中的.random()。请参考http://jsfiddle.net/granjoy/mgv6Y/17/。如果您认为它有帮助,请投票。 :P – Gran 2012-01-12 09:51:43

+1

谢谢,我会接受的答案,但我认为你是强制排序通过设置超时为所有后续项目更高时,你乘以id。所以当然以前的项目将首先解决:)...我其实有意识地在那里有随机超时因子,因为我不知道每个解决方案有多长时间。这是我做的,我认为它的工作原理:http://jsfiddle.net/Ayyoudy/mgv6Y/14/ 再次,感谢您的帮助! – Ayyoudy 2012-01-12 10:00:29