then的用法
- 通过return 给下一个then传值,成功/失败的返回值,最后都是传到下一个then的成功会回调
let t = new Promise((resolve, reject) => {
console.log(a) // 执行console会报错,最终只会执行reject
})
t.then((res)=>{
return res
},error=>{
return error
}).then(
(res) => {
console.log(res.toString(),‘res====’); // ReferenceError: a is not defined res====
},
(error) => {
console.log(error);
}
);
- then中的onFulfilled/onReject 是可选的, 下面的例子,第一个then没有return值,但是第二个then也可以接受到值,最终输出 then 回调可选。
let t = new Promise((resolve, reject) => {
resolve(‘then 回调可选’)
})
t.then().then(
(res) => {
console.log(res);
},
(error) => {
console.log(error);
}
);
- 实例不可 循环引用,报错 : Chaining cycle detected for promise #
let p = new Promise((resolve, reject) => {
resolve(‘不可循环引用’)
})
var p2=p.then(()=>{
return p2 // 返回的值还是p2
})
完整代码
// 定义状态常量
const STATUS_PENDING = “pending”;
const STATUS_FULFILLED = “fulfilled”;
const STATUS_REJECTED = “rejected”;
function resolvePromise(p