从同一个函数里面调用Javascript函数

时间:2014-12-21 11:53:27

标签: javascript asynchronous while-loop callback

我有一个执行多个DDBB调用的函数,因此它是异步的。

我需要调用该函数并检查它返回的JSON对象中的数据值(获胜者)。如果确实如此,我需要再次调用该函数,直到获胜者== false。

我不能使用while,因为它不是异步的,我该怎么做?

  someFunction(function(result) {
     // if result.winner == true repeat 
  })

2 个答案:

答案 0 :(得分:2)

您可以再次调用相同的回调函数,直到条件为true

someFunction(function repeat(result) {
    if (result.winner) {
        someFunction(repeat);
    }
});

查看下面的演示。

someFunction(function repeat(result) {
    document.body.innerHTML += '<br>' + result.winner;
    if (result.winner) {
        someFunction(repeat);
    }
});

var results = [true, true, true, false];
function someFunction(callback) {
    setTimeout(function() {
        callback({winner: results.shift()});
    }, (Math.random() + 1) * 1000 | 0);
}

答案 1 :(得分:0)

你看过async.js了吗?它有几个控制流异步功能。你可能想看看,同时,直到,doUntil:

https://github.com/caolan/async#whilst

whilst(test, fn, callback)

反复调用fn,而test返回true。停止时调用回调,或发生错误。