我正在尝试为Api编写JavaScript接口,但我无法弄清楚这个问题。我有代码来调用ajax请求:
mooshark.request('userInfoFromID', {
userID : '20991'
});
该代码创建了一个Ajax请求。当它启动时,它将内部变量设置为true(表示它正在运行)。然后在下一行我有这个:
var data = mooshark.response();
alert(data);
响应函数如下:
response: function () {
if(this.running == false){
return "done";
} else if (this.running == true){
alert("Running");
setTimeout(this.response, 3000);
}
}
输出(按此顺序)运行。未定义。 (JSON响应)。运行。它不会输出“完成”。当这个运行变为真时,有没有办法返回“完成”?我想提一下,这个。运行并不总是相同的请求时间。我知道总是可以选择在ajax请求中将所有代码包装在onCompleat函数中,但我希望将其作为最后的手段。
谢谢!
答案 0 :(得分:0)
如果不冻结浏览器,这是不可能的。
每当您的代码运行时,浏览器UI都将被完全冻结 如果您希望呼叫等待服务器回复,则需要完全冻结浏览器。 (这不是一个好主意)
答案 1 :(得分:0)
由于大部分时间都是通过setTimeout()调用response(),因此返回值并不实用。
但是 - 您可能永远不会将'running'变量设置为false。您可以在此处发布更多代码(例如,AJAX响应处理代码)。另外:你究竟想通过返回/提醒“跑步”和“完成”来完成什么?