首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery没有按顺序运行

jQuery没有按顺序运行
EN

Stack Overflow用户
提问于 2015-10-27 02:26:24
回答 2查看 40关注 0票数 1

这是我目前的代码。我想要做的是更改xmlParser中的数组,并将其返回到main (就绪函数),以便将其用于所有其他函数。但是,据我所见,在返回数组之前,$("#text")将运行。还有什么事要拖延吗?

代码语言:javascript
复制
$(document).ready(function() {
    var infoArray = []
    $.ajax({
        type: "GET",
        url: "works.xml",
        dataType: "xml",
        success: function(xml) { infoArray = xmlParser(xml)}
    });
    $("#test").text(infoArray.length);
});

function xmlParser (xml) {
    //do some push
    //I have a test here to make sure that the length of the array is what I want
    return Array;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-27 02:29:03

Ajax调用是异步的。这意味着,当您在这里执行它时,它就开始了,稍后它就完成了。必须将使用ajax调用结果的任何代码放在success处理程序中或在从成功处理程序调用的函数中,并将数据传递给。

Javascript中的异步操作在未来某个不确定的时间完成。同时,以下代码行继续执行(在Ajax代码完成之前)。然后,稍后,在当前执行线程完成之后,当结果从发送Ajax调用的服务器返回时,会调用Ajax调用的成功处理程序,并执行该代码。

下面是如何在success处理程序中使用ajax调用的结果:

代码语言:javascript
复制
$(document).ready(function() {
    $.ajax({
        type: "GET",
        url: "works.xml",
        dataType: "xml",
        success: function(xml) { 
            var infoArray = xmlParser(xml)
            $("#test").text(infoArray.length);
        }
    });
});

function xmlParser (xml) {
    //do some push
    //I have a test here to make sure that the length of the array is what I want
    return Array;
}

如果您不知道,"Ajax“中的第一个"A”代表异步。

FYI,值得学习如何在异步操作中使用承诺。jQuery自动为其ajax操作构建承诺,以便您可以使用以下承诺执行上述代码:

代码语言:javascript
复制
$(document).ready(function() {
    $.ajax({
        type: "GET",
        url: "works.xml",
        dataType: "xml"
        }
    }).then(function(xml) {
        var infoArray = xmlParser(xml)
        $("#test").text(infoArray.length);
    }, function(err) {
        // handle errors here
    });
});

这里看起来并不是很好,但是如果您开始对多个异步操作进行排序,或者使用嵌套的异步操作,或者希望等待多个异步操作完成,那么承诺可以使所有这些操作变得简单得多。

而且,承诺是内置在ES6中的,因此随着时间的推移,您将看到越来越多的代码使用它们。

票数 2
EN

Stack Overflow用户

发布于 2015-10-27 02:29:11

将$("#test").text(infoArray.length);放在success函数中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33358966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档