【发布时间】:2014-05-27 08:53:00
【问题描述】:
我知道我可以使用外部变量来识别外部函数需要处理的某些状态。但是考虑一下:如果内部函数是异步的?外层函数不会等到内层函数的变量发生变化,那现在怎么才能返回外层函数呢?
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,因为这会阻止页面反应。
【问题讨论】:
-
异步流无法做到这一点,我建议您在 ajax 请求完成时调用
outer(cb)的参数作为参数。 -
是的,你是对的,我想错了。
标签: javascript jquery ajax asynchronous closures