我可以使异步javascript方法与async-waterfall同步运行吗?

时间:2016-06-09 20:08:10

标签: javascript asynchronous

我的JavaScript应用程序中有三个函数调用,第二个是异步的,所以它看起来像这样。

function runner() {
    function1();
    function2(); //This is the one that is asynchronous
    function3();
}

这会导致function3在function2之前完成的问题,导致我的应用程序出现问题。到目前为止,我的应用程序是纯JavaScript,但我正在寻找一种强大的方法来确保我的函数顺序运行而不必进入回调地狱。我想我也许可以async-waterfall,但我没有在我的应用程序上运行节点,我只是在浏览器中。任何想法都表示赞赏。

1 个答案:

答案 0 :(得分:0)

如果绝对无法修改您的功能以使用承诺或接受回调,一种解决方案是使用interval检查function2是否已完成。绝对不是最好的方法,但这样的事情会起作用。

我认为这比回调地狱有点糟糕。

var waitFor = function(test, success) {
  var iv = setInterval(function() { 
  if (test()) { 
    clearInterval(iv); 
    success();
  }, 500);
}

var isFunction2Done = function() {
  //some logic here, true if done, false otherwise
}

function1();
function2();
waitFor(isFunction2Done, function3);