我该如何执行两个承诺,一个接一个?承诺链条的成语是什么?
例如,在JavaScript中,我可以
var promise1 = new Promise();
var promise2 = new Promise();
// await returns a result2 from promise2
await promise1.then(() => promise2);
我该怎么做在Perl 6一样的吗?
my $promise1 = Promise.new();
my $promise2 = Promise.new();
// Here I get only Promise2 object, not its result
await promise1.then({ $promise2 });
我必须等待$ promise2这样吗?
await promise1.then({ await $promise2 });
这甚至在JavaScript中也是错误的。你应该一直在使用'await Promise.all([promise1,promise2])'(然后从结果数组中获得第二个值,如果你正在寻找的话),否则如果'promise2'拒绝,你可能会得到未处理的拒绝在'promise1'结算之前。我确定有一个与'Promise.all'等价的Perl – Bergi
您的第一个代码块不是承诺的串行链。两者都在并行执行。 – jfriend00
@Bergi,如果我需要在promise2中使用promise1的结果呢? 假设promise1返回一些令牌,然后promise2使用它。 通常我使用的东西沿线 'promise1.then(RESULT1 => promise2)' Promise.all执行所有并行,不sequentally –