【问题标题】:Javascript two api callsJavascript 两个 api 调用
【发布时间】:2020-02-16 05:08:21
【问题描述】:

基本上我想调用一个API两次,将两个响应组成一个数组[res1,res2],然后对这个数组进行操作。我的代码是这样的:

function f() {
  apiCall1(params1)
    .then(response1 => [response1, apiCall2(params2)])
    .then(data => someFunction(data))
}

很遗憾,这种方法不起作用。我得到 data[0] 和 data[1] 的未定义属性。但是,如果我只进行一次 API 调用,一切正常。我想知道我的语法是否错误,以及实现它的好方法是什么?谢谢。

【问题讨论】:

  • 它们必须按顺序排列吗?如果没有,请使用Promise.all([api1(), api2()]).then(([res1, res2]) => { ... })。否则,请尝试 asyncawait 语法。
  • 谢谢! Promise.all 确实是我的解决方案。 :)

标签: javascript api


【解决方案1】:

您可以使用Promise.all 对承诺进行分组,例如:

function f() {
  Promise.all([apiCall1(params1), apiCall2(params2)])
    .then(data => {
       const response1 = data[0];
       const response2 = data[1];
    })
}

参见。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

【讨论】:

    猜你喜欢
    • 2021-06-25
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多