【发布时间】:2012-10-02 02:43:17
【问题描述】:
我有一个关于 JS 的工作流,它应该通过 setTimeout 函数一个一个地运行几个集合。如何使用 JS/jQuery 来完成,最好以一些简单而美观的方式?
看起来像这样
function recursiveOne(arg1){
if (allRight) return;
doSomething();
andAnotherOne();
setTimeout(function(){recursiveOne(arg1)}, 3000);
}
function coreFunction(){
recursiveOne(arg1);
recursiveTwo(arg2);
recursiveThree(arg3);
}
只有当 recursiveOne 已经完成最后一次迭代时才应该开始 recursiveTwo。
不好的部分是所有功能都通过 setTimeout 工作,因为我需要等待来自后端的反应,并且无法直接接收它 - 只能通过 HTML 源。
可能的解决方案,我可以看到:
- 下一个函数回调在前一个函数中正确传递。不太酷。
- jQuery defered 对象,它也不是那么漂亮,但更好一点。缺点是我仍然应该在我想以这种方式使用的每个函数中增加额外的延迟请求。
【问题讨论】:
标签: javascript jquery task-queue