本文主要是介绍浅谈Promise、Async和Await,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Promise
1、Promise
是异步编程的一种解决方案,本质是一个构造函数。使用Promise,可以避免“回调地狱”,即多层嵌套的回调函数,从而使代码更加清晰和易于维护
2、有三种状态:pending(进行中)、fulfilled(已成功)、rejected(已失败)
3、then方法、catch方法
all可以将多个Promise实例包装成一个新的Promise实例。同时,成功和失败的返回值是不同的,成功的时候返回的是一个结果数组,而失败的时候则返回最先被reject失败状态的值
Async和Await
1、async和await是建立在Promise之上的高级抽象,使得异步代码的编写和阅读更加接近于同步代码的风格
2、误处理可以通过传统的try…catch语句实现
Promise、Async和Await比较
1、async和await使得处理复杂的异步逻辑更加简单,尤其是在涉及多个依次执行的异步操作时
2、处理多个并行异步操作时,Promise.all()通常是更好的选择
Async和Await
1、ES6 新引入了 Generator 函数,可以通过 yield
关键字,把函数的执行流挂起,通过next()方法可以切换到下一个状态,为改变执行流程提供了可能,从而为异步编程提供解决方案
2、async函数是Generator的语法糖
function* myGenerator() {yield '1'yield '2'return '3'
}const gen = myGenerator(); // 获取迭代器
gen.next() //{value: "1", done: false}
gen.next() //{value: "2", done: false}
gen.next() //{value: "3", done: true}
*/yield和async/await看起来其实已经很相似了,它们都提供了暂停执行的功能,但二者又有三点不同
1、async/await自带执行器,不需要手动调用next()就能自动执行下一步
2、async函数返回值是Promise对象,而Generator返回的是生成器对象
3、await能够返回Promise的resolve/reject的值
对async/await的实现,其实也就是对应以上三点封装Generator
这篇关于浅谈Promise、Async和Await的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!