【发布时间】:2016-06-09 20:08:09
【问题描述】:
我的 JavaScript 应用程序中有三个函数调用,第二个是异步的,所以看起来像这样。
function runner() {
function1();
function2(); //This is the one that is asynchronous
function3();
}
这会导致 function3 在 function2 之前完成的问题,从而导致我的应用程序出现问题。到目前为止,我的应用程序是纯 javascript,但我正在寻找一种可靠的方法来确保我的函数按顺序运行,而不必进入回调地狱。我以为我可以async-waterfall,但我没有在我的应用程序上运行节点,我只是在浏览器中。任何想法表示赞赏。
【问题讨论】:
-
如果你的
function2既不接受回调也不返回promise对象,那么你无能为力。 -
好吧,严格来说这不是真的。他可以通过无限循环锁定浏览器等待
function2的一些副作用。但我也建议承诺。 -
不,他不能。因为这种副作用必须由无法运行的并行进程触发,因为 js 是单线程的。无限循环只会杀死页面。
-
标题中提到的“async-waterfall”是什么?我在问题中没有看到任何提及。
-
@NickP 您运行的环境是什么?浏览器还是 Node.js?