我有一個函數可以執行多個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