情景:
小米的妈妈告诉小米,小米的表姐小娥要去香港,小米的妈妈让小娥带点货。这段通话被同宿舍的小东听到了,小东刚好想买一双球鞋,听说香港的便宜,所以想让小米的表姐帮他带货
情景1: 小米同意了,小娥也同意了
const xiaoe = new Promise((resolve, reject) => {
resolve("我是小娥,我同意了")
})
// 返回了xiaoe,后面的then是对象p2状态的处理
const xiaoming = new Promise((resolve, reject) => {
//小米同意了
resolve(xiaoe)
}).then(
value => {
console.log(value + ",成功")
},
reason => {
console.log(reason + ",拒绝")
}
)
情景2:小米同意了,小娥因为要帮很多人拿东西,,拒绝了
const xiaoe = new Promise((resolve, reject) => {
reject("我是小娥,我拿不了很多东西,我拒绝了")
})
// 如果resolve参数是一个promise,将会改变promise的状态
const xiaoming = new Promise((resolve, reject) => {
//小米同意了
resolve(xiaoe)
}).then(
value => {
console.log(value + "。小东有买到球鞋")
},
reason => {
console.log(reason + "。小东没有买到球鞋")
}
)
情景3: 小米跟表姐不是很熟,不想麻烦她,拒绝了小东
const xiaoe = new Promise((resolve, reject) => {
resolve("我是小娥,我同意了");
// reject("我是小娥,我拿不了很多东西,我拒绝了");
})
// 如果reject参数是一个promise(xiaoe),该promise(xiaoe)不会处理
//直接作为参数传递给xiaoming的then拒绝处理方法
const xiaoming = new Promise((resolve, reject) => {
//小米拒绝了
reject(xiaoe)
}).then(
value => {
console.log(value + "。小东有买到球鞋")
},
reason => {
console.log(reason + "。小东没有买到球鞋")
}
)
图解