gpt4 book ai didi

javascript - 可能的 Javascript 范围问题

转载 作者:行者123 更新时间:2023-12-02 19:30:16 25 4
gpt4 key购买 nike

我对此有点菜鸟,所以请原谅我:)

我无法获取函数的这一部分来更新变量。有人可以看看我做错了什么吗?

http://pastie.org/private/zfnv8v2astglabluo89ta

从第 142 行到第 172 行,我最终没有得到任何结果。我已经在该函数内部进行了测试,以确保它实际上正在返回数据,但“body”变量在第 172 行之后返回。因此,如果我查看页面上生成的 HTML,它看起来只是从第 140 行跳过到 174。

感谢您的反馈!!

最佳答案

您的$.get是异步的。这意味着它将在代码其余部分之后完成,因此您不会看到它对该函数内的 body 变量的影响。相反,它的成功回调函数将在该函数完成后很长时间内被调用。

要像这里一样链接多个异步 ajax 调用,不能只使用正常的顺序编程,因为异步 ajax 调用不是顺序的。发送网络请求,然后您的 JavaScript 继续执行,稍后当响应到达时,成功处理程序将被调用并执行。

要像您一样运行顺序 ajax 调用,您必须将工作嵌套在成功处理程序中,以便使用响应的唯一代码实际上位于成功处理程序中。在伪代码中,它看起来像这样:

$.get(..., function(data) {
// operate on the results only in here

// a second ajax function that uses the data from the first
// or adds onto the data from the first
$.get(..., function(data) {
// now finally, you have all the data
// so you can continue on with your logic here

});
// DO NOT PUT ANYTHING HERE that uses the responses from the ajax calls
// because that data will not yet be available here
});

你不能做你正在做的事情,如下所示:

var myVariable;

$.get(..., function(data) {
// add something to myVariable
});
$.get(..., function(data) {
// add something to myVariable
});
$.get(..., function(data) {
// add something to myVariable
});
// do something with myVariable

这些 ajax 调用都不会在函数结束之前完成。您必须遵循我的第一个示例中的设计模式。

对于更高级的工具,可以随时使用 jQuery deferreds这只是定义 ajax 调用完成后运行的代码的不同方式。它看起来更像是顺序编程,尽管它实际上只是安排代码以与我的第一个代码示例相同的方式运行。

关于javascript - 可能的 Javascript 范围问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11574643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com