【发布时间】:2017-02-04 22:13:04
【问题描述】:
我有一个简单的承诺:
function p(l) {
return new Promise(function(resolve) {
alert(l);
resolve();
});
}
然后我尝试创建一个只有在 then 子句之后才会解决的承诺:
function pp(l1, l2) {
return new Promise(function(resolve) {
p(l1).then(() => {
alert(l2);
resolve();
});
});
}
我现在这样做:
p('start').then(pp('A', 'B')).then(p('end'));
我希望看到:开始,A,B,结束
但我看到的是:开始,A,结束,B
为什么?
我怎样才能实现我想要的,创建一个在 then 子句完成时将解决的 promise (pp)?
【问题讨论】:
-
.then(() => pp('A', 'B'))将解决您的问题。详细解答。 -
这会给你你想要的序列 p('start').then(p('A')).then(p('B')).then(p( 'End'));,但如果你有一个解决 nothing 的承诺,那就没有意义了。您可以对 alert('start');alert('A');alert('B');alert('end'); 执行相同的操作。有一个什么都解决不了的承诺真的没有意义。
-
coyotte508 - 不,这给了我:开始,结束,A,B
-
Hosar - 不,我不想更改代码的结构,这只是一个示例,我想创建一个带有 then 原因的承诺,然后可以将其链接为一个单元
-
添加了工作演示
标签: es6-promise