【发布时间】:2021-10-15 23:29:19
【问题描述】:
我正在阅读有关 Promises 的博客,它们显示了一个我根本没有得到的问题。 博客是:https://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html。
作者提出了 4 个带有图形解决方案的谜题:
谜题#1
doSomething().then(function () {
return doSomethingElse();
}).then(finalHandler);
谜题 #2
doSomething().then(function () {
doSomethingElse();
}).then(finalHandler);
谜题#3
doSomething().then(doSomethingElse())
.then(finalHandler);
谜题#4
doSomething().then(doSomethingElse)
.then(finalHandler);
这里 doSomething() 和 doSomethingElse 是承诺。
谁能给大家详细解释一下? 在第一个上,我得到了执行顺序。 第二,我不明白为什么 doSomethingElse 和 finalHandler 同时开始和结束。 第三,我不明白为什么 doSomething 和 doSomethingElse 同时开始。 doSomethingElse 不应该从 doSomething 的末尾开始吗? 第四,我什么都没有……
【问题讨论】:
-
在第一个示例中,
finalHandler正在等待 Promisereturn doSomethingElse(); <Promise>解决。第二个它不会等待,因为return没有设置为 Promise。它只是立即执行该功能。 -
那篇博文中解释了一切。
标签: javascript node.js asynchronous