温故知新(九三) promise 规范相关 var promise1 = new Promise((resolve, reject) => {reject();});promise1 .the

var promise1 = new Promise((resolve, reject) => {reject();});
promise1
 .then(null, function() {
 return 123;
 })
 .then(null, null)
 .then(null, null)
 .then(
 (val) => {
 console.log('promise2 已完成:' + val);
 },
 (val) => {
 console.log('promise2 已拒绝:' + val);
 });

结果:promise2 已完成: 123

解答:根据规范的说明来的

  • onFulfilled 和 onRejected 必须被作为普通函数调⽤(即⾮实例化调⽤,这样函数内部 this ⾮严 格模式下指向 window)
  • then ⽅法可以被同⼀个 promise 调⽤多次 当 promise 成功执⾏时,所有 onFulfilled 需按照其注册顺序依次回调 当 promise 被拒绝执⾏时,所有的 onRejected 需按照其注册顺序依次回调
  • then ⽅法必须返回⼀个 promise 对象 promise2 = promise1.then(onFulfilled, onRejected);
  1. 只要 onFulfilled 或者 onRejected 返回⼀个值 x ,promise 2 都会进⼊ onFulfilled 状态
  2. 如果 onFulfilled 或者 onRejected 抛出⼀个异常 e ,则 promise2 必须拒绝执⾏,并返回 拒因 e
  3. 如果 onFulfilled 不是函数且 promise1 状态变为已完成, promise2 必须成功执⾏并返回相同的值
  4. 如果 onRejected 不是函数且 promise1 状态变为已拒绝, promise2 必须执⾏拒绝回调并返 回相同的据因
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值