javascript - 如何在内部函数异步执行某些操作时从外部函数的回调返回值

标签 javascript asynchronous callback promise asynccallback

<分区>

我正在使用 Async调用一个函数,在该函数中它异步调用 db 并获取一些值,然后将该值返回给 async.series 的回调。但是我怎样才能将值作为外部函数的 return 值传递呢?

更多信息请引用下面代码中的注释。

getUserObjFromDb = function(username, cb) {
    var user = {};
    async.series([
            function(callback){
                var userObj = callDb(username);
                callback( null, userObj );
            }
        ],
        function(err, results){
            user = results[0];
            cb(user);
        });
}

var theUser = getUserObjFromDb(username, function(user){
  return user;
}); // theUser is undefined because the outer function getUserObjFromDb did not return anything even though its callback returned, it was only the callback of the async.series which returned. 

如何获取 user 传递给 theUser 的值?

我可能做的所有这些都是完全错误的,并且可能有更简单的方法,所以任何帮助将不胜感激。 谢谢。

最佳答案

老实说,我对这个问题不是很清楚。我猜您期望 getUserObjFromDb 返回回调返回的值。 如果是这样,试试这个:

getUserObjFromDb = function(username, cb) {
        var user = {};
           return async.series([
                    function(callback){
                        var userObj = callDb(username);
                        return callback( null, userObj );
                    }
                ],
                function(err, results){
                    user = results[0];
                    cb(user);
                });
        }

关于javascript - 如何在内部函数异步执行某些操作时从外部函数的回调返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33573033/

相关文章:

web-services - 执行时间长的REST请求的方法?

swift - 在 Swift 中创建异步 Action

javascript - 如何解决json错误: SyntaxError: missing ; before statement {"products":[ {"title" :"xyz" ,"id":1718,“created_at?

php - 雅虎回调域问题

javascript - Chart.js Canvas : can't center it

javascript - JS : Remove itme completely from object

c# - GetStringAsync 从不返回,执行异步 GET 的正确方法

function - LUA - 从回调中获取变量

javascript - 使用 jquery 迭代 JSON

javascript - Visual Studio 2017 是否有更漂亮的等价物? (或设置类似的方法)