这里函数返回一个匿名函数:
function respondWithResult(res, statusCode) {
statusCode = statusCode || 200;
return function(entity) {
if(entity) {
return res.status(statusCode).json(entity);
}
return null;
};
}
为什么我们在这里返回一个返回值的匿名函数?我们有什么优势以及何时尝试这样的事情?
这个匿名函数的参数entity
的填充方式是什么?我们将res传递给了respondWithResult
,接下来我们在匿名函数中得到entity
后面会发生什么?这个论点填充了什么价值?
如果仅填充res
,则直接执行此操作会出现问题:
if(res){
//bla bla
}
return null
编辑:该函数调用如下:
return Outlet.find().exec()
.then(respondWithResult(res))
.catch(handleError(res));
现在,res
是我们传递给respondWithResult
的内容。那是匿名函数在参数中得到的吗?如果是,有什么好处?为什么不直接使用res?
答案 0 :(得分:3)
为什么我们在这里返回一个返回值的匿名函数?我们有什么优势以及何时尝试这样的事情?
这通常是因为它可以访问其声明的函数范围。即局部变量statusCode
和res
。如果没有更多的背景,那么为什么在这里有用是不明显的。
这个匿名函数的参数实体是如何以及用什么填充的?
它是一个函数参数。当它被调用时,它会被填充的任何内容(在你共享的代码中不是这样)。
正如您所指出的,该函数是返回(未立即执行)。其他一些代码稍后会调用它。
现在,res是我们传递给respondWithResult的东西。那是匿名函数在参数中得到的吗?如果
没有。返回的函数将传递给then
。当promise结算时,结果将传递给它。