我在想以下是否爲正常行爲?何時 - 出現中間錯誤的意外承諾鏈
代碼
var when = require('when'); // I'm using [email protected] node_modules/when
console.log("INIT");
when.promise(function(resolve, reject) {
return when.reject("false")
.then(function(ok) {
console.log("Step 1 - in then, ok = %s", ok);
return 'ok1';
}, function(err) {
console.log("Step 1.1 - in catch, err = %s", err);
return reject(err);
}).then(function(ok) {
console.log("Step 2 - in then, ok2 = %s", ok);
return resolve("done");
}).catch(function(err) {
console.log("Step 3 - in catch, err = %s", err);
return reject(err);
});
}).then(function(mainok) {
console.log("Step 9 - in main then, mainok = %s", mainok);
}).catch(function(err) {
console.log("Step 9 - in main catch, err = %s", err);
});
這是我收到的輸出運行它
INIT
Step 1.1 - in catch, err = false
Step 2 - in then, ok2 = undefined
Step 9 - in main catch, err = false
當讀API我期待這一步驟1.1將被調用,那麼第9步而不是第2步。
這是一個錯誤還是我誤讀了API?
感謝您的提示!
請注意[反模式](https://github.com/petkaantonov/bluebird/wiki/Promise-anti-patterns)(創建不必要的承諾時,您可以使用/返回已有的)。 – jfriend00
避免['Promise'構造函數反模式](http://stackoverflow.com/q/23803743/1048572)! – Bergi