我正在开发JS承诺而且我有一个疑问,我已经提到了很多答案,但我还没有理解以下代码行之间的区别。你能救我吗?
提前致谢
// Case 1
firstPromise()
.then(() => {
return secondPromise();
})
.then()...
// Case 2
firstPromise()
.then(() => {
secondPromise();
})
.then()...
在第一种情况下,它返回第二个promise,在第二种情况下它只是执行。流程中的结果是什么?
答案 0 :(得分:4)
第一个产生第一个then
的结果取决于secondPromise
的结果,第二个没有。
then
创造了新的承诺。该承诺将根据then
回调的返回值
then
返回 thenable 值(例如另一个承诺),则then
的承诺是“奴役”的,并且当该可解决或当那个人拒绝时拒绝。then
回调返回一个不可用的值,则使用该值解析承诺。在您的第一个示例中,then
回调返回第二个承诺,因此其承诺从属于secondPromise
的承诺。在第二个示例中,您没有返回任何内容,因此调用then
回调的结果是值undefined
,因此then
的承诺将使用值{{1 }}