Javascript 如何在NodeJS中调用函数?
我对node JS有问题 基本上,我有这个功能:Javascript 如何在NodeJS中调用函数?,javascript,node.js,function,callback,Javascript,Node.js,Function,Callback,我对node 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)
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));
});
});
您正在尝试从回调函数返回值到异步函数。他们不是那样工作的。您将
getImageById()
视为是同步的,但getImageById()
是异步的(可以从回调的方式推断)
根据您的用例,有许多解决方案。最简单的方法是将console.log()
移动到回调内部。(但是如果您随后将console.log()
更改为return
语句,您将再次遇到相同的问题。)
如果这一切都让人困惑,请访问。您好,谢谢您的回复,我使用回调解决了这个问题<代码>让getImageName=function(query,callback){Images.getImageById(query,function(err,image){callback(image.filename);}}然后我调用
getImageName(book.cover,function(response){book.cover=response;res.json(book);})代码>这对我有用。
Images.getImageById(query,function(err,image){
return image.filename;
});