为了账号安全,请及时绑定邮箱和手机立即绑定

从then()返回值或Promise.resolve有什么区别

从then()返回值或Promise.resolve有什么区别

杨魅力 2020-02-03 15:01:18
之间有什么区别?new Promise(function(res, rej) {    res("aaa");  })  .then(function(result) {    return "bbb";  })  .then(function(result) {    console.log(result);  });还有这个:new Promise(function(res, rej) {    res("aaa");  })  .then(function(result) {    return Promise.resolve("bbb");  })  .then(function(result) {    console.log(result);  });我问的是我正在使用Angular和$ http服务以及链接.then()时出现不同的行为。因此,代码太多了,因此首先是上面的示例。
查看完整描述

3 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

您的两个示例的行为应该几乎相同。


在then()处理程序内返回的值将成为从该处理程序返回的promise的分辨率值then()。如果在内部返回的值.then 是一个承诺,则所返回的承诺then()将“采用该承诺的状态”,并像返回的承诺一样进行解析/拒绝。


在第一个示例中,您返回"bbb"第一个then()处理程序,因此"bbb"将其传递给下一个then()处理程序。


在第二个示例中,您返回一个Promise,该Promise立即用value解析"bbb",因此"bbb"被传递到下一个then()处理程序中。(Promise.resolve()这里是多余的)。


结果是一样的。


如果您可以向我们展示一个实际表现出不同行为的示例,那么我们可以告诉您为什么会发生这种情况。


查看完整回答
反对 回复 2020-02-03
  • 3 回答
  • 0 关注
  • 3362 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信