我知道这个问题已经被问过无数次了,但我无法找出问题所在。据我所知,你可以在javascript中修改函数内的全局变量。这对我不起作用。
var lastMessage = 0;
function loadChat() {
$.post("/lastmessage", { roomid: roomId })
.done(function(data) {
var response = JSON.parse(data);
if (response.state == "success") {
lastMessage = response.message;
console.log("Inside: " + lastMessage);
}
});
}
console.log("Outside: " + lastMessage);
这给了我
Outside: 0
Inside: 17
内部值正确,外部值不正确。问题可能是什么?
最佳答案
它是异步的,因此当你从外部调用它时,它还没有完成执行。这意味着只有在帖子完成后才会到达这部分代码
.done(function(data) {
var response = JSON.parse(data);
if (response.state == "success") {
lastMessage = response.message;
console.log("Inside: " + lastMessage);
}
});
但是 console.log("Outside: "+ lastMessage);
将继续执行而无需等待,因为 post 是异步的。
如果您希望在检索到的值后发生某些事情,一种选择是使用回调函数,例如:
function printMessage(message) {
console.log(message)
}
function loadChat(callback) {
$.post("/lastmessage", { roomid: roomId })
.done(function(data) {
var response = JSON.parse(data);
if (response.state == "success") {
lastMessage = response.message;
callback(lastMessage);
}
});
}
loadChat(printMessage);
关于javascript - 修改ajax请求中的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45042582/