gpt4 book ai didi

while循环中的Javascript同步超时

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

我试图在执行 AJAX 请求时伪造同步 JavaScript。我有一个 getPagePath(id) 函数,需要通过给定页面 ID 来获取页面的页面路径,它通过 Web API 接收数据。我认为这很简单,只需向服务器发出 ajax 请求并接收页面路径即可。但发生了什么:当请求页面路径时,我的代码继续运行并返回一个空的 var,之后 ajax 调用完成,但为时已晚。

我知道我的解释不多,所以这是我的代码:

var getPagePath = function() {

// Function to check if this.pagePath is set.
var pagePathReady = function() {
console.log('PAGEPATH: CHECKING');
if (this.pagePath && this.pagePath != null) {
return true;
} else {
return false;
}
};

if (!pagePathReady()) {
// No pagePath defined so lets set it.
this._setPagePath();

while (!pagePathReady())
{
// Not yet defined, check again..

// *** The problem ***
// This while loop is running insanely fast making the browser crash.
// How can I make this wile loop pause for 1 sec?
// *******************

console.log('PAGEPATH: NOT READY -> CHECK AGAIN');
}

// READY
console.log('PAGEPATH: READY -> VALUE: ' + this.pagePath);
return this.pagePath;
} else {
return this.pagePath;
}
};

var _setPagePath = function() {
if (!this.pagePathRequestFired) {
this.pagePathRequestFired = true;
// Fire request.
system.url(
this.getNodeId(),
function(url) {
// Request ready, set pagePath.
this.pagePath = url;
this.pagePathRequestFired = false;
},
this
);
} else {
// Call already running..
}
};

我已经在更解释的评论中设置了问题。

提前致谢!

最佳答案

如果确实需要,您可以使 ajax 调用同步。

xmlhttp.open("GET", "url", false);

注意第三个参数。

但是,我认为您在编写代码时需要更多练习才能使用事件/回调概念。

关于while循环中的Javascript同步超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11103310/

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