2017-08-08 12 views
0

私は複数の約束を処理することが必要な状況があります。変数が定義されていない場合に約束をスキップする

私は私が各変数に3

fileOption, setupOptions, moveOption 

変数基盤を持っていると仮定し setupOptionが定義されていない場合

file.validate(token) 
    .then((token) => file.create(fileOption)) 
    .then((file) => setup ? file.getToken(userfromSetup) : Promise.resolve({})) 
    .then((token) => setup ? file.setup(setupOptions) : Promise.resolve({})) 
    .then((data) => moveOption ? file.getTokenForMove(userFromMove) : Promise.resolve({})) 
    .then((token) => moveOption ? file.move(moveOption) : Promise.resolve({})) 
    .then((success)=>logger.log(`file created successfully`)) 
    .catch((err)=>logger.error(`Error`)) 

のような機能を要求し、私はそれのためにトークンを取得する必要はありませんし、 moveOptionのファイルと同じ設定を作成します。セットアップを作成するために、私は、だから私の懸念は、上記の変数が未定義をしている場合約束し、不必要な空の約束のリターンをスキップする方法である移動

のトークンは、第1、同じ作成する必要が

+0

約束を始める前に、私はnullをチェックします。次に、好きなようにコードを調整することができます。 – Webbanditten

+0

それは理由のために「約束」と呼ばれています。 'setupOption'がチェーン外で定義されている場合は、ここでそうであるように、なぜそれを最初にチェックせずに約束をするのでしょうか? – guessimtoolate

+0

すべての変数は動的コンテンツです。彼らは実行時になります。だからこそ私は約束をチェックした。 – Sam

答えて

0
var file_promise = file.validate(token) 
.then((token) => file.create(fileOption)) 
.then((file) => setup ? file.getToken(userfromSetup) : Promise.resolve({})) 
.then((token) => setup ? file.setup(setupOptions) : Promise.resolve({})); 
if(moveOption){ 
    file_promise.then((data)=>{file.getTokenForMove(userFromMove)}); 
} 
file_promise.then((token) => moveOption ? file.move(moveOption) : Promise.resolve({})) 
.then((success)=>logger.log(`file created successfully`)) 
.catch((err)=>logger.error(`Error`)); 

することができます単純に変数を使用して、条件付きステートメントを連鎖するかどうかを決定します。

これから発生する問題は、各ステップで受け取る内容を特定できないことですが、コードでthen()で呼び出された関数のパラメータが作成されますが、それらは使用されないため、何かトラブル。それ以外の場合は、あなたがやっているのとまったく同じようにして、デフォルト値などで解決してください。

関連する問題