async/await 工具函数的使用

 

async/await起到什么作用

async/await从字面意思上很好理解,async是异步的意思,await有等待的意思,而两者的用法上也是如此。async用于申明一个function是异步的,而await 用于等待一个异步方法执行完成。

Promise.allSettled()静态方法将一个 Promise 可迭代对象作为输入,并返回一个单独的 Promise。当所有输入的 Promise 都已敲定时(包括传入空的可迭代对象时),返回的 Promise 将被兑现,并带有描述每个 Promise 结果的对象数组。

Promise.all() 静态方法接受一个 Promise 可迭代对象作为输入,并返回一个 Promise。当所有输入的 Promise 都被兑现时,返回的 Promise 也将被兑现(即使传入的是一个空的可迭代对象),并返回一个包含所有兑现值的数组。如果输入的任何 Promise 被拒绝,则返回的 Promise 将被拒绝,并带有第一个被拒绝的原因。

一、异步获取数据

async function fetchData() {
  try {
    const res = await axios.get('https://api.example.com/data');
    if (res.code != 200) {
      throw new Error('response error');
    }
    return res;
  } catch (error) {
    console.log('Error:', error);
    throw error;
  }
}

使用await关键字等待异步请求返回的数据。这样,我们可以在代码中以同步的方式处理数据,而无需使用回调函数。

二、异步执行多个任务

async function performTasks() {
  const [result1, result2] = await Promise.allSettled([doTask1(), doTask2()]);
  console.log('Tasks completed:', result1, result2);
}

Promise.allSettled接收一个包含多个任务的数组,并返回一个新的Promise,直到所有任务都完成才会解析。

三、顺序执行异步任务

async function performTasks() {
  const result1 = await doTask1();
  const result2 = await doTask2();
  console.log('All tasks success');
}

按照顺序执行两个异步任务,并在两个任务都完成后打印一条消息。

四、异步循环

async function processItems(items) {
  await Promise.allSettled(items.map(item => taskItem(item)));
  console.log('All items success');
}

使用await在循环中处理每个项目。在处理完所有项目后,将打印一条消息。

五、延迟执行

function delay(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function delayedTask() {
  console.log('Task started');
  await delay(2000);
  console.log('Task end');
}

delay函数返回一个Promise,经过指定的延迟时间后解析。在delayedTask函数中,我们使用await让任务在经过2秒的延迟后才继续执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小码夫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值