我有以下javascript.我想要它做的是等到一个getJSON已经返回,其中设置了一个标志,然后做一些事情.然而,check在SO上找到下面的函数之后,loaded即使flag是真的,我实际上也无法记录它(因此processData从未执行过).我究竟做错了什么?
flag = false
$.getJSON(<url>,
function(params){
if (params){
flag = true;
}
}
);
var check = function() {
console.log("check A");
if (flag === false) {
console.log('still going to check');
return setTimeout(200, check);
}
console.log("loaded!");
processData();
}
check();
Run Code Online (Sandbox Code Playgroud)
你需要setTimeout(check, 200);而不是setTimeout(200, check);.flag在运行该函数之前,您还必须显式设置为false.
但是,您可以选择:
$.getJSON(<url>,
function(params){
if (params){
check();
}
}
);
var check = function() {
console.log("check A");
console.log("loaded!");
processData();
}
Run Code Online (Sandbox Code Playgroud)