这是应该返回名称的函数:
function getLookupNameById(lookup_id, callback){
var name = "";
if(lookup_id != 0) {
updateData({
lookup_id: lookup_id,
callback: function(status, data){
if( status && data.values){
values = data.values;
name = somevalue;
return name; //returns undefined
}
else{
console.log('Empty');
}
if(callback)
callback();
}
});
}
return name; //returns empty string
}
这是我从另一个脚本调用该函数的方式:
var name = instanceofscript.getLookupNameById(parameter);
我应该如何返回值?
答案 0 :(得分:2)
当你使用异步函数时,你不能return
来自它们的任何东西,因为它们不会在调用者返回之后运行。依赖于返回数据的所有内容都必须在回调函数中完成。
callback
函数应该接收name
作为参数:
if (callback) {
callback(name);
}
然后你需要这样称呼它:
instanceofscript.getLookupNameById(parameter, function(name) {
console.log(name);
});
这与使用AJAX基本相同,请参阅How do I return the response from an asynchronous call?