返回带有回调函数参数的函数

时间:2021-05-05 17:15:31

标签: javascript function parameters callback arrow-functions

考虑这个函数:

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 的参数,它们是回调函数的参数'处理程序'。关于传递给原始函数的回调参数,有什么我没有了解的地方吗?

谢谢!

2 个答案:

答案 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
相关问题