我在浏览器中执行了以下 javascript 代码:
function run(request) {
var res;
$.ajax({
url:'http://custom-host:8080/',
type: "POST",
async: false,
data: request
}).done(function(data, textStatus, jqXHR){
console.log(textStatus);
res = data;
});
return res;
}
它只是向我的自定义服务器询问它得到的响应。Chrome 控制台日志如下所示:
> var a = run({command:'version'}); // executing custom function
success dev.pycached-admin/:14 // this is the console log
undefined // this is the console returned value
> a // ask for value a
"1.1" // value a (returned from ajax)
问题是:为什么在控制台中返回 undefined,之后返回 '1.1' 的实际值(该值被正确分配)?
如果我debugger
在 done 函数中添加语句:
}).done(function(data, textStatus, jqXHR){
console.log(textStatus);
debugger;
res = data;
});
然后我可以看到可能维护 chrome 控制台的 Apple 代码(VM
脚本选项卡中的文件)。反正AJAX调用是同步的,为什么第一次没有返回值呢?