之前用angular写过一个家风家教的官网,里面有涉及到了发送请求,该请求成功之后根据返回的状态再次发送请求这样的多重回调的功能,因写之前有看过类似使用Promise的方法来实现多重回调的问题
MDN上说: Promise 对象是用于一个异步操作的最终完成(或失败)及结果值的展示. (简单说就是处理异步请求。我们经常会做些承诺,如果我赢了你就嫁给我一下,如果输了我就嫁给你一下类似诺言。这就是promise的中文含义:诺言,一个成功,一个失败。)
哈哈,好鸡贼啊,看代码:
1
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
36 //promise 接收两个参数
// resolve: 异步事件成功时调用 (表白成功)
// reject: 异步调用失败时调用 (表白失败)
var kamutu = new promise((resolve, reject) => {
if(表白().result === '表白成功') {
//反馈
resolve(表白().boyName)
}else{
reject('同志们,我表白被拒了,呜呜呜')
}
})
// 随机一个随机表白方法,返回表白结果和表白对象
function 表白() {
return {
boyName: Math.random() > 0.5 ? '小白': '黑黑',
result: Math.random() > 0.5 ? '表白成功' : '表白失败'
}
}
// 表白完毕和同志们分享表白结果
kamutu.then(res => console.log('同志们,我表白'+res+'成功了')) //表白成功
.catch(res => console.log(res)) // 表白失败
//听说kamutu说打算表白,Tom也要表白
var Tom = new promise((resolve, reject) => {
if(表白().result === '表白成功') {
resolve(表白().boyName)
}else {
reject('同志们,我表白被拒了,呜呜呜'')
}
})
Tom.then(res => console.log('同志们,我表白'+res+'成功了'))
.catch(res => console.log(res))
// 那么问题来了,我们怎么知道 kamutu 和 Tom 都表白成功了,然后开一个party庆祝一下呢
Promise.all([kamutu, Tom])
.then(res => console.log(res)) // [kamutu表白对象,Tom表白对象]
.catch(res => console.log(res)) 、、第一个表白失败对象
看到这里是不是大概知道promise是是什么东西了