如果我使用闭包来定义某些内容,是否有一种方法可以等待,直到变量被填充,然后再继续下一步。
示例:
var myVari = someFunction();
$.each(myVari, function(){/*code for each*/});
定义 myVari 的函数是一个 AJAX 调用,可能需要一秒或 4 秒(是的,它不快)来定义变量。问题是,在 AJAX 调用产生结果之前,$.each 已经触发并由于 myVari 为空而出错。有没有更好的方法来处理这种情况?
最佳答案
您应该调整您的代码,以便可以将回调传递给 someFunction
,该回调将在 AJAX 调用完成时执行。
等待 AJAX 调用完成的唯一方法是将调用更改为同步,但强烈不鼓励这样做,因为它会在 AJAX 调用期间完全锁定浏览器。
因为您已经在使用 jQuery 库,所以这个回调
过程变得更加容易。我不会像现在那样返回变量,而是返回 jQuery AJAX 对象 ( which has a promise interface as of 1.6 ),这样您就可以轻松地向其添加回调:
function someFunction () {
return jQuery.ajax('some/url.php', {
// whatever
});
}
var myVari = someFunction();
myVari.done(function (data) {
$.each(data, function(){/*code for each*/});
});
关于javascript - 有没有办法暂停脚本直到 javascript 关闭完成? JavaScript、jQuery、AJAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7710287/