我該如何執行兩個承諾,一個接一個?承諾鏈條的成語是什麼?
例如,在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 –