考虑这个函数:
export const catchAsync = (handler) =>
(...args) =>
^^^^ why are these the parameters to handler, and not catchAsync?
handler(...args).catch(args[2]);
在第一个返回的函数中,它说:
(...args: [Request, Response, NextFunction]) =>
现在,据我所知,...args 只是一件事:'handler' 它不是回调的参数,因为那些不是 catchAsync 的参数,它们是回调函数的参数'处理程序'。关于传递给原始函数的回调参数,有什么我没有了解的地方吗?
谢谢!
答案 0 :(得分:1)
catchAsync
是一个返回另一个函数的函数。外部函数和内部函数各自传递不同的东西。您可以使用如下代码:
const handlerWithCatch = catchAsync(someHandlerFn);
handlerWithCatch(someRequest, someResponse, someNextFn);
// Or on a single line:
catchAsync(someHandlerFn)(someRequest, someResponse, someNextFn)
内部 handler
将包含 someHandlerFn
,而 args
将是 [someRequest, someResponse, someNextFn]
的数组
答案 1 :(得分:1)
只需将您的问题重读 1000 遍即可。
正如您提到的,vector2 <- c()
for(i in vector1) vector2 <- c(vector2, get(i)$columname)
不是 catchAsync 的参数。这个函数是你在 Javascript 中实现策略设计模式的方式。
catchAsync 本身将返回一个函数,您将使用 req,res,next 调用该函数
...args