es6中Promise的一些例子
今天查看了一下promise的文档,写了一些例子,方便理解promise
#首先是promise对resolve,reject的处理
resolve相当于success
reject相当于error1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36new Promise((resolve,reject)=>{
console.log("promise第一步,使用resolve报给.then")
resolve(1)
}).then((result)=>{
return new Promise((resolve,reject)=>{
console.log("promise第二步,拿到第一步结果是",result,"这里是使用resolve报数的结果,相当于success");
console.log("接下来我们使用reject报数")
reject(2)
})
}).then((result)=>{
return new Promise((resolve,reject)=>{
console.log("promise第三步,拿到第二步结果是",result,"这里是使用resolve报数的结果,相当于success");
resolve(3)
})
},(result)=>{
return new Promise((resolve,reject)=>{
console.log("promise第三步,拿到第二步结果是",result,"这里是使用reject报数的结果,相当于error");
console.log(".then的成功与失败都演示了,下面试.catch")
reject("使用reject报数,若下一层.then写了失败的方法,会给下一层的失败的方法,否则会给.catch")
})
}).then((result)=>{
return new Promise((resolve,reject)=>{
console.log("楼上的如果使用resolve报数,就是success的会走这个")
})
}).catch((result)=>{
console.log("由于上一层.then只写了成功后的方法,失败后的没有写,所以报错了,报错后,我们就用。catch来接收")
console.log("<--------------------下面是promise.catch的内容,收到了楼上扔出的异常------------------------>")
console.log("",result)
return new Promise((resolve,reject)=>{
console.log("楼下尝试finally,但是很多浏览器可能不支持")
resolve("楼上扔给楼下finally的resolve")
})
}).finally((result)=>{//resolve或者reject调用结束后,都会调用这个
console.log(result)
})
#下方是Promise.all
Promise.all(array),此方法接收一个promise对象的数组,数组中都需要时promise对象,其中数组中的对象全部使用resolve报数的,.then中会执行callback1也就是成功,如果有使用reject报数的话,就会执行callback2,也就是失败
1 |
|
Promise.race与Promise.all类似,不同的是,Promise.race是数组对象中,有一个数据先到,就执行.then,根据先到的promise的成功与失败,执行对应的事件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22Promise.race([
new Promise((resolve, reject) => {
console.log("promise.all-1-1,resolve")
resolve(1)
}), new Promise((resolve, reject) => {
setTimeout(() => {
console.log("promise.all-1-2,resolve,这里在定时器里报数")
resolve(2)
}, 1000)
}), new Promise((resolve, reject) => {
setTimeout(() => {
console.log("promise.all-1-3,resolve")
resolve(3)
},1000)
}),
]).then((result) => { //第一个收到的结果是resolve报数的会走这里
console.log(".race为,只要有一个报数,就执行,这里是resolve")
}, (result) => { //第一个收到的结果是reject报数的会走这里
console.log(".race为,只要有一个报数,就执行,这里是reject")
})
这些大概就是promise相关的东西,如有错误,欢迎交流指正
原文作者: IT梅
原文链接: http://www.meixiaohan.com/2019/01/02/es6的promise简单例子/
版权声明: 转载请注明出处(必须保留原文作者署名原文链接)