私はこのようなデザインを持っています。私は拒絶が起こった後にもう何も実行されないことを望んだが、最後の.fail。繰延チェーン、Node.jsのとq、すべてのチェーンの部品のための1つのErrorHandlerのは
私の「CHECKDATAは」この(いやそのチェーンにおける唯一の同期一部)のようになります。deferred.rejectが呼び出された場合でも、
var checkData = function(args){
var deferred = q.defer();
var fields = args[0];
var files = args[1];
var file = args[1].uploadedFile0;
var secondFile = args[1].uploadedFile1;
if(file.type !== "application/javascript"){
return deferred.reject("please only upload javascript-files");
}
(...)
return deferred.resolve([fields, file]);
}
、私は渡された引数なしで「findCommand」で終わります。私はこの鎖に間違ったことを理解していますか?
また、質問:このデザインは良いパターンですか?または、他の/より良いベストプラクティスがありますか?
は、あなたが本当に各 '、その後の内部の応答の検証を行うべきです(... ) 'あなたの約束の声明。応答に期待される内容が含まれていない場合、約束を破ります。 –
しかし、すべてのフェイルコールバックは、同じことをするでしょう... "onUploadFailed"を呼び出し、エラーを拒否に渡します。これは私にとってはコードの重複のように思え、読みやすさを低下させます。私は拒否するのではなくexeptionを投げることを考えました.q-documentationが上記のチェーンのエラーをキャッチすると "キャッチ"メソッドが言います。しかし、これらは少し臭いようです – IntegerWolf
私はブルーバードを使用しているのでわかりませんが、すべてのケースで遅延したプロンプトを返すべきだと思います。 – Keith