此代码挂起。
我有理由确定这是因为匿名函数中的响应是一个与外部作用域不相关的新变量。我该如何解决这个问题?
function foo() { //...
var url = "http://urliciously-urlish-url"
response = null;
$.get(url, function (data) {response = data;
});
while( response === null)
{
1;
}
console.log(response);
//...
}
注意我知道这种设计将(与轮询系统一样)挂起页面,直到响应变为非空。在这种情况下这是可以的。
最佳答案
$.get
是异步的。如果您确实希望这是同步的,则必须使用$.ajax
函数:
$.ajax({
url: url,
async: false,
success: function(data) {
response = data;
}
});
话虽这么说,我同意 cHao 的观点——你应该习惯编写异步代码。
关于javascript - 使用闭包强制同步 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10215410/