无法获取回调函数以将值返回到父函数

时间:2017-07-02 06:44:50

标签: node.js callback

我是nodejs的新手并且正在努力应对回调。我有一个回调块,它期望来自子函数的值,但是,我无法理解为什么该值没有被返回到父块 - user.getUser。非常感谢帮助。

子功能

getUser(userEmail) {
    logger.info('fetching details for user '+userEmail)
    dynamoModel.get(userEmail, function(err, userModel){
    if(err) logger.error(err);
    logger.info(userModel);
    return userModel;
});
}

回调

user.getUser(email, function(err, userModel){
        logger.info('parent block->'+userModel);
    });

输出

info: fetching details for user dhdhd
info:  email=dhdhd, password=ttjtkt, lastLogin=1498963442595, loginVendor=local, createdAt=Sun Jul 02 2017 12:44:02 GMT+1000 (AEST), updatedAt=Sun Jul 02 2017 12:44:02 GMT+1000 (AEST)
info: fetching details for user dhdhd

此外,我不知道为什么对getUser函数的调用发生了多次发生 - 正如从多个日志条目那样 -

info: fetching details for user dhdhd

1 个答案:

答案 0 :(得分:0)

您应该将回调添加到getUser()函数,因此一旦dynamoModel.get(...)完成就会调用它。

您正在调用者中传递回调但未在getUser(...)中使用它。

getUser中的返回值没有意义,因为这是异步代码,结果将由您传入的回调接收。

getUser(userEmail, done) {
    logger.info('fetching details for user '+userEmail)
    dynamoModel.get(userEmail, done)
}

user.getUser(email, function(err, userModel){
    if(err) logger.error(err);
    logger.info(userModel);
   });