Promise.all

Promise.all

在JavaScript中,Promise是一种处理异步操作的机制,而Promise.all是一个强大的工具,用于并行处理多个Promise。当所有Promise都成功时,Promise.all返回一个新的Promise,其状态为Fulfilled,并携带一个包含所有Promise成功结果的数组;如果任何一个Promise失败,Promise.all立即返回一个Rejected的Promise,并携带第一个失败的Promise的错误信息。

为什么需要Promise.all

在实际开发中,有些场景需要并行执行多个异步操作的情况。例如,同时从多个API获取数据、同时上传多个文件、同时读取本地多个文件。使用Promise.all可以非常方便地实现这一需求,提高代码的可读性和可维护性。

all的使用

Promise.all(iterable);

iterable: 一个可迭代对象(一般是一个数组),包含多个Promise对象。

1. 并行获取天气信息、新闻信息和股票信息
// 模拟异步操作:获取天气信息
function fetchWeather() {
   
  return new Promise((resolve) => {
   
    setTimeout(() => {
   
      resolve({
    weather: "Sunny", temperature: 30 });
    }, 1000);
  });
}

// 模拟异步操作:获取新闻信息
function fetchNews() {
   
  return new Promise((resolve) => {
   
    setTimeout(() => {
   
      resolve(["新闻1", "新闻2", "新闻3"]);
    }, 2000);
  });
}

// 模拟异步操作:获取股票信息
function fetchStocks() {
   
  return new Promise((resolve) => {
   
    setTimeout(() => {
   
      resolve({
    stock: "AAPL", price: 150 });
    }, 1500);
  });
}

// 使用Promise.all并行处理这些异步请求
Promise.all([fetchWeather(), fetchNews(), fetchStocks()])
  .then((results) => {
   
    const [weather, news, stocks] = results;
    console.log("天气信息: ", weather);
    console.log("新闻信息: ", news);
    console.log("股票信息: ", stocks);
  })
  .catch((error) => {
   
    console.error("出错了: ", error);
  });

2. 并行读取多个文件内容

假设我们有三个文件:file1.txt、file2.txt、file3.txt&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值