- then中有return的话,return的值有两种情况
1.除Promise对象外,则默认成功
2.Promise对象,则下一个then是处理这个Promise对象的
let p=new Promise((resolve,reject)=>{
resolve("fulfilled");
// reject("io")
}).then(
value=>{
// 返回除Promise对象外,默认都为成功
// return "zy"
return new Promise((resolve,reject)=>{
resolve('第一个then')
})
},
reason=>{
console.log("error"+reason);
// return "a"; 返回字符串,默认为成功
}
).then(
value=>{
// console.log(value);//zy
// 没收到输出信息
// 当返回promise对象时,如果{}内都没写,则一直处于pending状态
console.log(value);
return new Promise((resolve,reject)=>{
reject('处理失败')
})
},
reason=>{}
).then(null,reason=>{
console.log(reason); //处理失败
})
- 其他类型的Promise封装
then除了返回Promise对象,还可以返回其他,如果有一个then(resolve,reject){ }方法,则自动封装成一个对象且只执行then方法
new Promise((resolve,reject)=>{
resolve('Promise成功')
}).then(
value=>{
return {
name:'学生',
age:21,
// 会被封装成一个Promise
then(resolve,reject){
resolve("这是对象")
}
}
},
).then(
value=>{
console.log(value); //这是对象
}
)