2017-05-30 7 views
0

私は内部に異なる約束事を持つif-else条件を持っています。論理がどの条件を入力して約束を実行したのかを判断した後、最終的な約束が実行されていることを確認する必要があります。約束が条件付き約束の後に実行されることを確認する

if (a < 5) 
 
{ 
 
    vm.promise1() 
 
    .then((data) => { 
 
     //do something with data 
 
    }) 
 
} 
 
else if (a > 5) 
 
{ 
 
\t vm.promise2() 
 
    .then((data) => { 
 
     //do something with data 
 
    }) 
 
} 
 
else 
 
{ 
 
\t vm.promise3() 
 
    .then((data) => { 
 
     //do something with data 
 
    }) 
 
}

今はコンディション後に実行されるvm.finalPromise()を持っています。私は条件のそれぞれのすべての約束の上に.finally()を置いてはいけません。他の実装はありますか?

おかげ

+0

あなたが投稿したコードの上に 'var p;'があります。 'p = vm.promise1 ....'など、最後に 'p.then(....' –

答えて

2

後に他の約束のようにそれを使用して、それらの約束のいずれかを保持するためにVARを作成し、私はお勧めしますあなたはそれを "Promisy"とします。変数に約束を格納する代わりに、約束を返す関数を呼び出します。これはスタイルの好みに過ぎないことに注意してください。

function doSomething() { 
    if (a < 5) { 
    return vm.promise1().then((data) => { 
     //do something with data 
    }); 
    } else if (a > 5) { 
    return vm.promise2().then((data) => { 
     //do something with data 
    }); 
    } else { 
    return vm.promise3().then((data) => { 
     //do something with data 
    }); 
    } 
} 

doSomething().then(() => { 
    // finally do something 
}); 
+0

これを答えとしてマークしています。ありがとうございます:) – jengfad

1

がある場合/他の場合など、コードの私の意見では

var p; 
if (a < 5) { 
    p = vm.promise1() 
    .then((data) => { 
     //do something with data 
    }) 
} else if (a > 5) { 
    p = vm.promise2() 
    .then((data) => { 
     //do something with data 
    }) 
} else { 
    p = vm.promise3() 
    .then((data) => { 
     //do something with data 
    }) 
} 
p.then((result) => { 
    // do your magic here 
}); 
関連する問題