Javascript 如何在NodeJS中调用函数?

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)

我对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){
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;
  });