【问题标题】:Javascript calling function from inside same function从同一函数内部调用 Javascript 函数
【发布时间】:2015-02-19 17:59:42
【问题描述】:

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

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

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

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

【问题讨论】:

  • 把函数调用放到实际返回结果的success里面。
  • 能否包含整个代码 sn-p ?我特指从数据库中获取代码的函数。
  • @fornal 你的意思是从同一个函数内部调用函数?

标签: javascript asynchronous while-loop callback


【解决方案1】:

您可以再次调用相同的回调函数,直到条件为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);
}

【讨论】:

    【解决方案2】:

    你看过 async.js 吗?它有几个控制流异步功能。您可能想研究 while、doWhilst、until、doUntil:

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

    whilst(test, fn, callback)
    

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

    【讨论】:

      猜你喜欢
      • 2014-01-01
      • 2014-10-01
      • 2014-07-31
      • 2020-08-03
      • 2017-03-05
      • 1970-01-01
      • 2015-04-06
      • 2011-10-19
      • 2018-06-12
      相关资源
      最近更新 更多