代码详解:Async/Await优于基础Promises的7大原因

本文详细介绍了Async/Await相对于Promises的优势,包括简洁的语法、更好的错误处理、易于理解和调试、支持同步和异步操作等,并通过代码示例对比了两者的差异,强调了Async/Await在提升代码可读性和维护性方面的价值。
摘要由CSDN通过智能技术生成

全文共4898字,预计学习时长10分钟

 

 

图片来源:https://unsplash.com/@grohsfabian

 

Async/await已被引入NodeJS 7.6,当前能在几乎所有先进的浏览器上运行。这绝对是自2017年以来JavaScript最好的附加语法,没有之一。

 

Async/Await 101

 

• Async/await是一种编写异步代码的新方法。以前编写异步代码会用callbacks和promises。

 

• Async/await 实际上只是一种基于promises的糖衣语法,不能与基础callbacks或节点callbacks一同使用。

 

• Async/await和promises一样,都是非堵塞式的。

 

• Async/await让异步代码更具同步代码风格,这也是其优势所在。

 

句法

 

假设函数getJSON返回一个promise,该promise通过某个JSON对象进行解析。我们只想调用它并记录该JSON,然后返回“done”。

 

以下是运用promises执行上述步骤的方式:

 

const makeRequest = () =>

  getJSON()

    .then(data => {

      console.log(data)

      return "done"

    })

 

makeRequest()

 

以下则是用async/await的效果:

 

const makeRequest = async () => {

  console.log(await getJSON())

  return "done"

}

 

makeRequest()

 

两者有一些不同:

 

1. 函数前有关键词async。关键词await 只能用于async定义的函数之内。任一async函数都能隐式返回promise,其解析值是从该函数返回的任意值(在此指字符串“done”)。

 

2. 上一点意味着不能在代码顶部使用await,因为它不在async定义的函数范围之中。

 

// this will not work in top level

// await makeRequest()

 

// this will work

makeRequest().then((result) => {

  // do something

})

import pandas as pd

 

3. await getJSON() 意味着 console.log 调用会等到getJSON() promise进行解析后才输出解析值。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值