首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Javascript - 等待多个异步回调返回?

在JavaScript中,等待多个异步回调返回可以通过使用Promise和async/await来实现。

首先,可以使用Promise.all()方法来等待多个异步操作完成。该方法接收一个Promise对象数组,如果所有Promise对象都成功完成,则返回一个包含所有Promise对象结果的数组,否则返回一个拒绝状态的错误对象。

例如,以下代码使用Promise.all()来等待两个异步回调返回:

代码语言:javascript
复制
const p1 = fetch('https://example.com/api/v1/user')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

const p2 = fetch('https://example.com/api/v1/product')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error(error));

Promise.all([p1, p2])
  .then(values => {
    console.log(values);
  })
  .catch(error => {
    console.error(error);
  });

在上述代码中,Promise.all()方法接收一个Promise对象数组,并将所有Promise对象放入一个数组中。然后,它等待所有Promise对象都成功完成,并将它们的值作为数组返回。如果在等待过程中任何一个Promise对象被拒绝,则返回一个拒绝状态的错误对象。

除了Promise.all()方法之外,还可以使用async/await语法来等待多个异步回调返回。async/await是一种语法糖,它可以让我们更容易地编写异步代码,并使代码更易于阅读和理解。

以下是一个使用async/await等待多个异步回调返回的示例代码:

代码语言:javascript
复制
async function fetchData() {
  try {
    const [p1Response, p2Response] = await Promise.all([
      fetch('https://example.com/api/v1/user'),
      fetch('https://example.com/api/v1/product')
    ]);
    const [user, product] = await Promise.all([
      p1Response.json(),
      p2Response.json()
    ]);
    console.log({ user, product });
  } catch (error) {
    console.error(error);
  }
}

fetchData();

在上述代码中,我们使用async/await语法将Promise.all()和Promise.allSettled()方法包装在async函数中。然后,在try/catch块中,我们使用await语法等待所有异步操作完成,并使用Promise.allSettled()方法来获取所有异步操作的返回结果。如果其中任何一个异步操作返回了拒绝状态,则会立即抛出错误,并执行catch块中的代码。

以上两种方法都可以用来等待多个异步回调返回,具体使用哪种方法取决于个人喜好和需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

2分37秒

19-Promise关键问题-能否执行多个回调

11分21秒

43-尚硅谷-JUC高并发编程-异步回调

5分6秒

32-Promise自定义封装-指定多个回调的实现

10分44秒

JavaScript教程-23-回调函数的概念【动力节点】

5分35秒

197、商城业务-异步-CompletableFuture-完成回调与异常感知

3分20秒

12_尚硅谷_Kafka_生产者_回调异步发送

8分10秒

31-Promise自定义封装-异步任务回调的执行

4分9秒

41-Promise自定义封装-then方法回调的异步执行

40分14秒

Web前端入门教程 44 JavaScript基础 16 回调 学习猿地

18分17秒

day14/下午/286-尚硅谷-尚融宝-创建异步回调接口

5分42秒

day14/下午/287-尚硅谷-尚融宝-异步回调验签

9分5秒

03_尚硅谷_Promise从入门到自定义_2种回调函数(同步与异步)

领券