是否可以安全地等待异步请求完成,然后从函数返回值。这样的事情会导致任何问题吗?
使用 jQuery
function test()
{
var $request = ...; //Async promise
var done = false;
while(!done)
{
$request.always(function(){
done = true ;
}) ;
}
return true ;
}
[更新] 正如 @Ninsly 指出的,javascript 只有一个线程,因此使用循环不是一种选择。
重复 JavaScript asynchronous return value / assignment with jQuery
最佳答案
您可以使用同步 Ajax 请求。 将 async 选项指定为 false 以获取同步 Ajax 请求。 然后,您的回调可以在父函数继续之前设置一些数据。
test: function(){
jQuery.ajax({
url: '...',
success: function(response) {
if(response.bOk == false)
alert(response.content);
//you could return some here
},
async: false
});
}
请小心,如果您要使用此功能,您将阻止/锁定所有其他处理,直到完成为止... 就像在 PHP 中无休止地做一样。所以如果你的请求没有结束..这会导致一个小问题:)
关于jquery - 返回之前等待异步完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27068567/