Node.js异步编程——async/await实现

一、async/await基础语法

在Node.Js编程中,async关键字用于定义异步函数,这个异步函数执行完会返回一个Promise对象,异步函数的内部可以使用await关键字来暂停当前代码的继续执行,直到Promise操作完成。

在用法上,async关键字主要用于声明一个异步函数,await关键字主要用于等待Promise操作的返回结果,若await等待的Promise操作被rejected,此时会抛出异常,需要对异常采用"try/catch"处理。

async/await的语法格式: 

async function() {
    await [Asynchronous Action]}

async/await代码样例: 

1.等待Promise执行结果,并利用try/catch捕获异常

//定义异步函数
async function fetchData() {
    try {
        //异步操作,从API获取数据
        //使用await等待函数执行完成
        const response = await fetch('https://test.com/');
        const data = await response.json();
        console.log('The data is:', data);
    } catch (error) {
        console.error('Err occured:', error);
    }
}

//调用异步函数
fetchData();

2.async时序测试

async function async1() {
    console.log('async1 start');
    await async2();
    console.log('async1 end');    
  }
async function async2() {
    console.log('async2 finish');        
  }
console.log('script start');  
async1();
console.log('script end');

运行结果:

script start
async1 start
async2 finish
script end
async1 end

二、async/await和Promise的关系

1.async/await的语法是基于Promise来实现的。

2.async/await对Promise进行了封装,异步编程时避免了繁琐的Promise链式调用。

3.async/await的设计是为了简化Promise异步编程的实现方式,代码可读性更强。

4.async/await基于Promise增加了对执行步骤的控制,可以通过await来暂停/恢复执行。

基于Promise实现的异步操作:

fetchData()
  .then(data => process(data))
  .then(result => save(result))
  .catch(err => console.error(err));

基于async/await实现的异步操作:

try {
  const data = await fetchData();
  const result = await process(data);
  await save(result);
} catch (err) {
  console.error(err);
}

以上代码实现中,基于".then"实现的连续操作会让每一个步骤立即执行,基于await实现的连续操作可以让当前步骤暂停等待。

以下两段代码的实现效果相同: 

Demo

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员与背包客_CoderZ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值