Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回带有回调函数参数的函数_Javascript_Function_Parameters_Callback_Arrow Functions - Fatal编程技术网

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

Javascript 返回带有回调函数参数的函数,javascript,function,parameters,callback,arrow-functions,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])

考虑这一功能:

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的参数,它们是回调函数“handler”的参数。关于将回调函数的参数传递给原始函数,是否有我没有学到的东西


谢谢

catchAsync是一个返回另一个函数的函数。外部函数和内部函数分别传递不同的内容。您可以使用以下代码:

const handlerWithCatch = catchAsync(someHandlerFn);
handlerWithCatch(someRequest, someResponse, someNextFn);

// Or on a single line:
catchAsync(someHandlerFn)(someRequest, someResponse, someNextFn)

在insider上,
处理程序将包含
someHandlerFn
,而
参数将是
[someRequest,someResponse,someNextFn]的数组
catchAsync
是一个返回另一个函数的函数。外部函数和内部函数分别传递不同的内容。您可以使用以下代码:

const handlerWithCatch = catchAsync(someHandlerFn);
handlerWithCatch(someRequest, someResponse, someNextFn);

// Or on a single line:
catchAsync(someHandlerFn)(someRequest, someResponse, someNextFn)

在insider上,
处理程序将包含
someHandlerFn
,而
args
将是
[someRequest,someResponse,someNextFn]
的数组,只需重新阅读您的问题1000次即可

正如您所提到的,
…args
不是catchAsync的参数。此函数是如何在Javascript中实现策略设计模式的

catchAsync本身将返回一个函数,您将使用req、res和next调用该函数

catchAsync(handler)(req,res,next);

把你的问题重读1000遍

正如您所提到的,
…args
不是catchAsync的参数。此函数是如何在Javascript中实现策略设计模式的

catchAsync本身将返回一个函数,您将使用req、res和next调用该函数

catchAsync(handler)(req,res,next);

您当前如何调用此函数?预期输出和实际输出是什么?你确定这不是typescript代码吗?好的,我编辑了类型信息以显示JS代码。你当前如何调用此函数?预期输出和实际输出是什么?你确定这不是typescript代码吗?好的,我编辑了类型信息,只是显示了JS代码。好的,谢谢,我正在接近,仍在努力解决这个问题好的,谢谢,我正在接近,仍在努力解决这个问题