我知道我可以使用外部变量来标识外部函数需要处理的某些状态。但考虑到这种情况:如果内部函数是异步的呢?外部函数将不会等待内部函数的变量改变,那么现在我该如何返回外部函数呢?
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()
很可能会返回true,因为ajax调用可能需要很长时间。出于同样的原因,我不想设置async:false
,因为那会停止页面反应。
outer(cb)
中,在 ajax 请求完成时调用它。 - olsn