我知道我可以使用外部變量來識別外部函數需要處理的某些狀態。但考慮一下:如果內部函數是異步的?外層函數不會等待內層函數的變量會改變,那麼我現在怎麼才能返回外層函數呢?JavaScript:如何在異步內部函數中返回外部函數?
function outer() {
var flag = true;
// For example, a jquery-like ajax call
$.ajax({
// Some settings
error: function(jqXHR, textStatus, errorThrown) {
// Here I want to return outer()
flag = false;
}
});
return flag;
}
所以你可以看到,如果我用flag
作爲返回值,outer()
很可能會迴歸真實的,因爲Ajax調用可能需要很長的時間。出於同樣的原因,我不想設置async: false
,因爲這會停止頁面反應。
這對於異步流程是不可能的,我建議你在ajax請求完成時調用'outer(cb)'作爲參數添加一個回調方法。 – olsn
是的你是對的,我想錯了。 – Melkor