假設我有這樣的多回調需要
var a = getData();
function getData() {
if (some_condition) { // Do this }
else {// Do this }
return fetchFromDB(param);
}
function fetchFromDB(param) {
db.transaction(function (tx) {
tx.executeSQL("SELECT foo FROM bar WHERE column = ? ", [param], function (tx, res) {
return res.rows.item(0).foo
});
});
}
問題的腳本是tx.executeSQL是異步的,所以fetchFromDB()方法返回undefined對來電者即的getData(),同樣的不確定被傳遞迴主功能。 爲了避免這種情況我必須fetchFromDB()一個回調像
tx.executeSQL("SELECT foo FROM bar WHERE column = ? ", [param], function (tx, res) {
callBack1(res.rows.item(0).foo);
});
所以現在值返回的getData(),但我需要在這裏有一個callback2返回主功能也從調用callback1返回數據。通過這種方式,我似乎需要回撥我曾經打過電話的地方。當然,我在這裏錯過了一些東西!我怎樣才能限制一個回調?
@elclanrs能否請您解釋一點實現這一目標。 – GoodSp33d
你不能。正如你發現的那樣,你只能通過回調返回異步調用的結果。 – JohnnyHK