# 1.异步和同步
const promise = new Promise((resolve, reject)=>{
console.log(1)
resolve()
console.log(2)
})
promise.then(()=>{
console.log(3)
})
console.log(4)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
运行结果:
1
2
4
3
解析:promise构造函数是同步执行的,promise.then中的函数是异步执行的,先执行同步代码,再执行异步代码。
# 2.promise的三种状态
const promise1 = new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve('success')
},1000)
})
const promise2 = promise1.then(()=>{
throw new Error('error!!!')
})
console.log('promise1',promise1)
console.log('promise2',promise2)
setTimeout(()=>{
console.log('promise1',promise1)
console.log('promise2',promise2)
},2000)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
结果:
promise1 Promise {
解析:
promise 有 3 种状态:pending、fulfilled 或 rejected。状态改变只能是 pending->fulfilled 或者 pending->rejected,状态一旦改变则不能再变。上面 promise2 并不是 promise1,而是返回的一个新的 Promise 实例。