1
我期待以下打印1 2 3
。但它打印1 undefined 3
。我錯過了什麼?ES2015承諾 - 我錯過了什麼?
var p = Promise.resolve('2');
new Promise(resolve => { console.log('1'); resolve(); })
.then(p)
.then((result) => console.log(result, '3'));
你必須通過功能'then',而不是承諾。 – Bergi
我記得你問過關於單子的問題。一個'Promise'是一個monad(雖然是一個奇怪的)。它是未來價值的上下文或容器。你不能以有意義的方式自己組合兩個上下文/容器,期望可以嵌套它們。但'then'(它只是'chain'或'bind')就是以避免嵌套'Promise'的方式來實現的。因爲'then'只是'chain',所以你可以傳遞函數給它返回一個Promise。 Monadic函數需要一個值並返回一個monad。 – ftor