0

変数が設定されている場合に何かをする必要がある単純な if else シナリオがあります。それ以外の場合は、else 部分で実行します。

if(flag) {
  doSomething();
}
doNextThing(someParam);

フラグが設定されている場合は、doSomething() と doNextThing() を実行する必要があります

doSomething と doNextThing の両方が promise を返します。これを実装する最良の方法は何ですか?

現在、私のコードは次のようになります。

if(flag) {
  doSomething().then(doNextThing);
} 
else doNextThing(someParam);

よりクリーンなコード セグメントで 2 つをエレガントに組み合わせる最良の方法は何ですか?

私は試した:

var somePromise = new Promise(function(resolve, reject){
     if(flag)
        doSomething.then(resolve(result));
      else resolve();
})

return somePromise.then(doNextThing(resolvedValue))

しかし、これは機能しません。約束 doSomething は決して解決されず、コードはすぐに返されるようです。また、次のような上記のいくつかのバリエーションを試しました。

var somePromise = new Promise(function(resolve, reject){
     if(flag)
        doSomething.then(resolve);
      else resolve();
})

と:

var somePromise = new Promise(function(resolve, reject){
     if(flag)
        doSomething.then(function(result){
             resolve(result);
        }.bind(this));
      else resolve();
}.bind(this));

しかし、最初のオプションを除いて、何も機能しません。だから、私の質問は - これを達成するためのより良い/エレガントな方法はありますか?

4

3 に答える 3