我有一个函数可以执行多个DDBB调用,所以它是异步的。来自同一函数内部的Javascript调用函数
我需要调用的功能和它返回的JSON对象查看数据值(冠军)。如果这是真的,我需要再次调用函数,直到赢家==假。
一段时间,因为它不是异步,我怎么能做到这一点,我不能用?
someFunction(function(result) {
// if result.winner == true repeat
})
我有一个函数可以执行多个DDBB调用,所以它是异步的。来自同一函数内部的Javascript调用函数
我需要调用的功能和它返回的JSON对象查看数据值(冠军)。如果这是真的,我需要再次调用函数,直到赢家==假。
一段时间,因为它不是异步,我怎么能做到这一点,我不能用?
someFunction(function(result) {
// if result.winner == true repeat
})
可以再次调用相同的回调函数,直到条件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);
}
你有没有看着async.js?它有几个控制流异步功能。你可能想看看,同时,doWhilst,直到doUntil:
https://github.com/caolan/async#whilst
多次拨打FN,而测试返回true。停止时调用回调,或发生错误。
将调用放到实际返回结果的成功内部。 – rfornal
你能包含整个代码片段吗?我具体指的是从数据库获取代码的函数。 – JKaan
@fornal你的意思是从相同的函数内调用函数? – Egidi