Javascript Node.js'的参数;s回调函数
下面的代码使用node.js和mongoose创建一个GET路由。在findById函数中,我们使用了一个回调函数,它接受err和foundCampground。我将回调函数解释为某种高阶函数,但如何传递包含参数的函数?执行findById时,传递给回调函数的变量是什么?我这样问是因为err和foundCampground在其他任何地方都没有定义,所以我不知道在执行过程中应该传递给回调函数什么Javascript Node.js'的参数;s回调函数,javascript,node.js,mongoose,Javascript,Node.js,Mongoose,下面的代码使用node.js和mongoose创建一个GET路由。在findById函数中,我们使用了一个回调函数,它接受err和foundCampground。我将回调函数解释为某种高阶函数,但如何传递包含参数的函数?执行findById时,传递给回调函数的变量是什么?我这样问是因为err和foundCampground在其他任何地方都没有定义,所以我不知道在执行过程中应该传递给回调函数什么 app.get("/campgrounds/:id", function(req, res){
app.get("/campgrounds/:id", function(req, res){
Campground.findById(req.params.id, function(err, foundCampground){
if(err){
console.log(err);
}
res.render("show", {campground: foundCampground});
});
});
campgrand.findById的第二个参数的参数,即err
和foundcampgrand
,没有在任何地方定义,因为它是。。。函数定义的参数
以防您不熟悉参数和参数之间的差异
参数是函数声明中的变量。
而参数是传递给该参数的函数的实际值
例如:
req.headers.body
和函数(err,foundcampgrand){…}
是一个参数
同时,err
和foundCampground
是一个参数
至于,哪些参数将被传递到err
和foundCampground
?这将由逻辑Campground.findById
下面是一个示例,说明如何编写自己的函数来接受回调
const items=[{id:1,名称:'Adam'},{id:2,名称:'Ramadoka'},];
函数findById(searchedd,回调){
//第二个参数是回调函数,我们将调用它
//通过将error(如果找不到)作为第一个参数传递(否则为null)
//并且该项(如果找到该项)作为第二个参数(否则为null)
用于(项目的常数项){
if(item.id==searchedId){
返回回调(空,项);
}
}
返回回调(新错误('notfound'),null);
}
//然后你可以这样称呼它:
findById(2,函数(错误,项){
if(error){console.error(error);}
if(item){console.log(item);}
});
我希望它能有所帮助。findById
应该使用1个或2个参数调用回调函数,这就是err
和foundCampground
的作用。你为什么对app.get
的回调没有同样的问题?你为什么问我.findById
?当app.get
实际执行相同的操作时?非常感谢您的回答。将项放在函数定义中可能更好?它可以以任何方式定义,哈哈,只是如果我在findById主体中定义项,每次调用它时都会重新初始化。因为它是静态的,所以初始化一次感觉很自然。