我知道我可以通过回调函数来访问该值,看起来像How to return value from an asynchronous callback function?但是在我的情况下,它需要执行同步方法,所以我可以在回调之外做任何动作,任何提示都要提供帮助吗?
var foo;
function getFoo(callback) {
$.ajax({
url: url,
async: false
})
.done(function(respond) {
var data = respond.data;
doStuff(data, function(respond) { //This is callback from Asynchronous function
callback(respond);
})
});
}
getFoo(function(respond) {
foo = respond;
});
return foo; //How can I access foo value from respond
答案 0 :(得分:0)
如果整个函数是同步的,则只能返回一个值;在你的情况下,doStuff
是异步的,所以你不能那样返回foo
(但最好还是异步编写整个东西,因为如果你使用jQuery的async: false
选项,它会阻止用户界面,直到AJAX结果返回为止。)
以下是您可以重新构建代码的示例:
function example(exampleCallback) {
function getFoo(callback){
$.ajax({
url: url
})
.done(function(respond) {
var data = respond.data;
doStuff(data,function(respond){ //This is callback from Asynchronous function
callback(respond);
})
});
}
getFoo(function(respond){
exampleCallback(respond);
});
}
example(function(foo) {
//do something with foo
});