【问题标题】:How do you pass a variable to a Promise.All function?如何将变量传递给 Promise.All 函数?
【发布时间】:2019-09-21 17:13:03
【问题描述】:

在下面的示例中,我试图将 filter const 传递给 Promise.all 函数,但我不知道如何将它传递下去,这导致它在最后一行中未定义。

如何将变量传递给Promise.all 函数?

if (query.filter) {
  const filter = '&filter=' + query.filter;
} else {
  const filter = '';
}

const [companyResponse, requestsResponse] = await Promise.all([
  // API Call "Read a company"
  $axios.$get('/companies/' + params.company),

  // API Call "List a companies requests"
  $axios.$get('/companies/' + params.company + '/requests?count=5&include=owner' + filter)
]);

【问题讨论】:

  • 您在if ... else 中的声明在这些代码块中,使它们成为这些代码块的本地代码。

标签: javascript vue.js nuxt.js


【解决方案1】:

const 是 block scoped。所以,filter 实际上是undefined 在if 大括号之外。注意这个 sn-p 中的错误:

const query = { filter: '' }

if (query.filter) {
  const filter = '&filter=' + query.filter;
} else {
  const filter = '';
}

console.log(filter)

要修复它,您希望在块之外定义过滤器,在这种情况下,这仍然可以通过 const 使用三元来实现:

const filter = query.filter ? `&filter=${query.filter}` : '';

const [companyResponse, requestsResponse] = await Promise.all([
  // API Call "Read a company"
  $axios.$get('/companies/' + params.company),

  // API Call "List a companies requests"
  $axios.$get('/companies/' + params.company + '/requests?count=5&include=owner' + filter)
]);

【讨论】:

  • 啊,谢谢。我觉得很奇怪我自己不能解决这个问题。但那是因为我在研究错误的问题! ?‍♂️
  • 很高兴为您提供帮助!另外,不要为此感到太难过——我们有时都容易出现隧道视觉。祝你好运!
【解决方案2】:

因为您在 if 语句中定义了过滤器。在 if 语句之前执行此操作:

let filter

然后从 if 和 else 块中删除“const”。

【讨论】:

    猜你喜欢
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    • 2020-12-20
    • 2011-06-21
    • 2020-07-28
    • 1970-01-01
    相关资源
    最近更新 更多