之间有什么区别?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()这里是多余的)。
结果是一样的。
如果您可以向我们展示一个实际表现出不同行为的示例,那么我们可以告诉您为什么会发生这种情况。
添加回答
举报
0/150
提交
取消