我在 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);
}
其中 recursiveTwo 仅应在 recursiveOne 已完成最后一次迭代时启动。
不好的部分是所有函数都通过 setTimeout 工作,因为我需要等待后端的 react ,并且无法直接接收它 - 只能通过 HTML 源。
我能看到的可能的解决方案:
- 下一个函数回调直接在上一个函数中传递。不太酷。
- jQuery延迟对象,它也不是那么漂亮,但好一点。缺点是我仍然应该在我想用这种方式使用的每个函数中提出额外的延迟请求。
最佳答案
您需要将函数作为回调发送
function recursiveOne(arg1, callback){
if (allRight) callback();
doSomething();
andAnotherOne();
setTimeout(function(){recursiveOne(arg1, callback)}, 3000);
}
function coreFunction(){
recursiveOne(arg1, function(){
recursiveTwo(arg2)
});
}
(旁注)我记得这个项目在做异步事情时帮助了我很多:
关于javascript - 如何使用 JS/jQuery 对 setTimeout 设置的多个函数进行排队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12839488/