【发布时间】:2019-12-26 12:54:31
【问题描述】:
但是这个功能有什么用呢?如果我们立即解决这个承诺,我们还不如直接在这个 then() 实现处理程序中编写代码。
例子:
myPromise.then(function(someV) {
// ...
return v1;
}).then(function(v) {
// some code
也就是说,我们不妨将// some code 移动到第一个履行处理程序中。
(我认为通常的用例是返回 new Promise() 以便我们可以链接承诺。)
【问题讨论】:
-
你能引用具体的句子吗?它说“
then()返回的承诺将是一个已解决的承诺”?我在该 MDN 页面上只能找到诸如“then返回的承诺得到解决”之类的提及(没有直接的时间限定)。返回的承诺始终处于未决状态。 -
@Bergi 它是该列表中的第一项:“返回一个值,然后返回的承诺以返回的值作为其值来解决。”
-
我想我误解了你的问题。您是在询问将代码移动到 next
then处理程序中,而不是将其移动到then处理程序下方(和外部),以防承诺被同步解决(它永远不会)。 -
您可能不会编写这样的代码,即您总是将“
// some code”移动到第一个处理程序中。但是一个承诺链最终必须返回一个非承诺值是相当明显的,所以我有点迷失在你迷失在这里的地方。