javascript - 如何使用 JS/jQuery 对 setTimeout 设置的多个函数进行排队

标签 javascript jquery task-queue

我在 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)
    });

}

(旁注)我记得这个项目在做异步事情时帮助了我很多:

https://github.com/caolan/async

关于javascript - 如何使用 JS/jQuery 对 setTimeout 设置的多个函数进行排队,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12839488/

相关文章:

php - 像谷歌翻译一样做出选择

javascript - 为什么圆没有正确地居中于网格?

jquery - 为什么通过 jQuery 放大(css)不起作用

javascript - 我如何编写 JQuery 函数来从内联样式 div 中获取背景图像并将其放入图像标签中?

internet-explorer - jquery ajax 无法在 IE 中发送

google-app-engine - 还有其他类型的 "Task Queue"API 吗?

c# - 排队框架解决方案

google-app-engine - ERROR : (gcloud. app.deploy) 错误响应:[9] Cloud build XXXXXXXXXXXX 状态:FAILURE

javascript - iFrame 无法从 codepen 或任何其他网站加载

javascript - 使用 javascript (coffeescript/rails) 提交 2 个不同的表单,第二个表单取决于第一个表单中保存的信息