猿问

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

之间有什么区别?


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()时出现不同的行为。因此,代码太多了,因此首先是上面的示例。


杨魅力
浏览 3484回答 3
3回答

守着一只汪

您的两个示例的行为应该几乎相同。在then()处理程序内返回的值将成为从该处理程序返回的promise的分辨率值then()。如果在内部返回的值.then 是一个承诺,则所返回的承诺then()将“采用该承诺的状态”,并像返回的承诺一样进行解析/拒绝。在第一个示例中,您返回"bbb"第一个then()处理程序,因此"bbb"将其传递给下一个then()处理程序。在第二个示例中,您返回一个Promise,该Promise立即用value解析"bbb",因此"bbb"被传递到下一个then()处理程序中。(Promise.resolve()这里是多余的)。结果是一样的。如果您可以向我们展示一个实际表现出不同行为的示例,那么我们可以告诉您为什么会发生这种情况。
随时随地看视频慕课网APP
我要回答