Promise
构造函数接受一个函数作为参数,该函数的两个参数分别是resolve
和reject
1 | const promise = new Promise(function(resolve, reject) { |
resolve
函数的作用是,将Promise
对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;reject
函数的作用是,将Promise
对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。
例1:
1 | let promise = new Promise(function(resolve, reject) { |
promise代替回调函数的优缺点
优点:
- 避免可读性极差的回调地狱
- 使用
.then()
编写的顺序异步代码,简单易读 - 使用
Promise.all()
编写并行异步代码变容易
- 使得原本的多层级的嵌套代码,变成了链式调用
- 让代码更清晰,减少嵌套数
promise执行顺序(settimeout、asnyc)
1 | setTimeout(() => console.log('a'), 0); |
1 | async function async1() { |