我是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
答案 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);
});