javascript - 有没有办法暂停脚本直到 javascript 关闭完成? JavaScript、jQuery、AJAX

标签 javascript jquery ajax closures

如果我使用闭包来定义某些内容,是否有一种方法可以等待,直到变量被填充,然后再继续下一步。

示例:

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/

相关文章:

javascript - 使用backbone.js通过独特的过滤器对评级进行排序

javascript - 在javascript中存储唯一值的数据结构

Javascript 文本幻灯片

javascript - 我如何让这个 jQuery 脚本工作

ajax - 网络聊天使用什么语言?

php - 如何在文件上传和插入数据库时​​包含加载 gif

Javascript 使用变量作为对象键将匿名对象插入数组

javascript - 奇怪的 Safari 动画渲染问题

jquery - Materialise 模态覆盖整个页面(模态弹出窗口未置于前台)

javascript - DateTimePicker 从数据库中预定日期和时间