「ゴーストプロミス」という言葉が私の場合のように見えるhereが見つかりました。でも_check
trueを返しますが、それはまだ(undefined
その結果)console.log
コマンドに進み、約束パターンを修正する方法 - Ghost Promise?
return Q.Promise(function(resolve, reject) {
firstFunctionThatReturnPromise()
.then(function(firstResult) {
_check(firstResult) ? resolve(firstResult) : return secondFunctionThatReturnPromise();
})
.then(function(secondResult) {
console.log(secondResult);
return thirdFunctionThatReturnPromise(secondResult);
})
.then(function(thirdResult) {
resolve(thirdResult);
})
.catch(function(e) {
reject(e)
});
});
問題がある:
私はこのようなコードを持っています。
_check
がfalseを返す場合、期待どおりに動作します。
だから私の質問は次のとおりです。
- 上記の動作が正常であれば?
- このケースを処理するより洗練された方法がある場合は、
アップデート1:多くは、私が代わりに直接結果を返すのでQ.Promise
を使用する理由という疑問を呈しました。これは汎用関数であり、他の関数で共有されているからです。
// Usage in other functions
genericFunction()
.then(function(finalResult) {
doSomething(finalResult);
})
.catch(function(err) {
handleError(err);
});
あなたは:これはgenericFunction内にある場合でも、あなたはまだあなたが既に持っている約束を返すことができ
:あなたの擬似コードを使用して
が、それはこのようになりますここでは幽霊を持っていないが、平凡な['プロミス]コンストラクタ反パターン](http://stackoverflow.com/q/23803743/1048572)! – Bergi