# Promise
# 1.promise有几种状态?
三种pending(进行中),fulfilled(已成功),rejected(已失败)
# 2.promise常见题目?
待完善
# 3.怎么理解promise?
- promise是个对象,主要用来解决回调地狱。
- promise.resolve('foo')等价于 new promise(resolve => resolve('foo'))
console.log(1)
new Promise(function(resolve, reject) {
console.log(2)
})
console.log(3)
// 输出1 2 3
1
2
3
4
5
6
2
3
4
5
6
# 4.手写实现promise?
待完善
# 5.promise构造函数是同步执行还是异步执行,then方法呢?
promise构造器是同步执行,then内部回调函数是异步执行
# 6.Promise静态方法,实例方法,使用场景?
- promise是个类(属性添加static属于实例属性)
- resolve reject .race .all都属于静态方法。
- .then,.catch,.finally方法属于实例方法,
# 说说.race和.all?
.race有一个完成了就返回(返回的是完成的那个的值),.all全部完成了才返回(all成功返回的是一个数组,失败返回的是第一个失败的值)
# promise.any?
.race有一个完成就返回,无论成功与失败。而any只要有一个成功就返回,更关心成功。没有成功就是失败,是AggregateError类型的错误
# promise.allSettled
- 在所有promise都fulfilled或rejected后,返回一个数组(包括成功和失败的)
- promise.all如果有一个reject就会返回第一个失败的值,丢失了其他成功的
# 7.then方法为什么可以链式调用?
因为then方法会返回一个新的promise
# 实现.then方法
function test(prop) { return new Promise(resolve => { resolve(prop) }) }
# 8.封装同步定时器/如何实现一个sleep函数?
返回一个promise里面封装了定时器(定时器的function就是resolve)
function sleep (time) { return new Promise((resolve) => setTimeout(resolve, time)); }
# 9.reject和catch区别?
- reject抛出异常,catch处理异常
- reject是promise方法,catch是promise实例