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简单例子/
版权声明: 转载请注明出处(必须保留原文作者署名原文链接)