传递函数和()之间的区别=> {}在Express中

问题描述 投票:-1回答:1

这两者之间有什么区别?只有(1)起作用,(2)滞留在浏览器中;

((1)app.get('/source*', createProxyMiddleware({ target: serviceProvider}))

((2)app.get('/source*', () => { createProxyMiddleware({ target: serviceProvider}) })

javascript node.js express http-proxy http-proxy-middleware
1个回答
1
投票

在选项(2)中,您将createProxyMiddleware({ target: serviceProvider})放在了既不处理请求也不返回方法的函数中。

() => {}是写作的缩写:

function(){}

因此,本质上,选项(2)中的代码与:相同

app.get('/source*', function () {
  createProxyMiddleware({ target: serviceProvider})
});

基本上,您自己的功能接管了渲染器。

我还没有尝试过,但是请考虑尝试从您的函数中返回createProxyMiddleware({ target: serviceProvider})

示例:

app.get('/source*',  () =>  {
  // do here whatever you planned on doing inside your function before returning the renderer 

  return createProxyMiddleware({ target: serviceProvider});
});



1
投票
createProxyMiddleware({ target: serviceProvider})

这将返回一个函数,该函数尚未使用来自快速中间件的参数执行。为了使第二个示例正常工作,您只需要执行返回的函数,如下所示

2) app.get('/source*', (req, res, next) => {
  const func = createProxyMiddleware({ target: serviceProvider});
  func(req, res, next);
})

0
投票

我会说范围,尝试:

app.get('/source*', (req,res,next) => {
  try {
    createProxyMiddleware({ target: serviceProvider})
  }
  catch(error) {
    next(error)
}
})

0
投票

get的第二个参数需要匹配参数签名(请求,响应,下一个),该签名是express中任何中间件(包括端点控制器)的签名。 https://expressjs.com/en/guide/using-middleware.html

1创建正确的标准中间件功能。

2不返回任何内容,也不在响应中返回任何内容,也不调用“ next()”移至下一个请求中间件。

希望有帮助。我正在用电话接听。


0
投票

让我们先假设createProxyMiddelware函数返回值“ hello”。然后,我们可以像这样重新编写您的两个场景:

1. app.get('/source*', "hello")
2. app.get('/source*', () => "hello")

所以您现在可以看到区别。在第一种情况下,您正在评估createProxyMiddleware功能。在第二种情况下,第二个参数是回调函数,该函数在被调用时将调用createProxyMiddelware函数

© www.soinside.com 2019 - 2024. All rights reserved.