如何从回调内返回值?

时间:2014-09-11 06:28:32

标签: jquery string function callback

这是应该返回名称的函数:

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);

我应该如何返回值?

1 个答案:

答案 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?