我遇到了节点JS的问题。
基本上,我有这个功能:
let getImageName = function(query,callback){
Images.getImageById(query,function(err,image){
return image.filename;
});
}
但是当我调用它时,console.log()打印未定义,我知道函数getImageName正在工作。
app.get('/api/books/:_id', function(req, res){
Book.getBookById(req.params._id, function(err,book){
if(err){
throw err;
}
console.log(getImageName(book.cover));
});
});
答案 0 :(得分:0)
您正在尝试将值从回调函数返回到异步函数。他们不这样做。您正在将getImageById()
视为同步,但getImageById()
是异步的(可以从回调的方式推断出来)。
Images.getImageById(query,function(err,image){
return image.filename;
});
根据您的使用情况,有许多解决方案。最简单的可以将console.log()
移动到回调内部。 (但是,如果您随后将console.log()
更改为return
语句,则会再次出现同样的问题。)
如果这一切都令人困惑,可以在https://docs.nodejitsu.com/articles/getting-started/control-flow/what-are-callbacks/进行简短说明。