2017-04-23 15 views
0

こんにちは皆さん、おかげさまで助力をいただきました。以下はBluebird promise.all中期的な約束を守って約束を続ける

は私が

function1(){ 
    throw some error(); 
} 
function2() { 
    // dosomething successfully; 
} 

promise.resolve() 
    .then() 
    .then(
     // here i want to do promise.all and if there is any exception i want to continue with chain 
     promise.all(function1, function2) 
     .catch() // handle error here only 
) 
    .then() 
    .then() 
    .catch() 

は誰もが私はこれを達成することができますどのように私を助けることはできませんしようとしているものです。これに何らかのエラーがある場合は、promise.allを実行します。私はこの約束を破りたくはありません。

+0

パターンの質問では、構文を修正し、 'return'は' Promise.all()の前に '.then()'呼び出し '内に含まれている期待した結果を返す必要があります – guest271314

答えて

2

試してください:あなたはPromise.all().catch()を持っていて、キャッチから投げていない、または拒否約束を返さない場合は

Promise.resolve().then(()=> { 
    return Promise.all(promisesArray).catch((err) => console.log(err)) 
}).then(() => console.log('continue futher')); 
0

が、その後、約束チェーンがどのような値で.catch()を継続していきます戻る。

try/catchの直後にモデル化されています。ここでは、キャッチが再開しない限り例外を停止します。同様に、.catch()は、キャッチハンドラからの再試行(または拒否された約束の返却)を行わない限り、拒否を停止します。

さらに、コードフローが正しくありません。あなたがここにPromise.all()を持っている方法が正しくありません:あなたは.then()ない約束であるPromise.all()を呼び出した結果に関数を渡す必要があり

Promise.resolve().then(...).then(Promise.all(...).catch(...)).then(...) 

Promise.all()に電話するときは、約束事を渡す必要があります。

このようにあなたがそれを行うことができます

Promise.resolve() 
    .then(...) 
    .then(function() { 
     return Promise.all([funcReturnsPromise1(), funcReturnsPromise2()]).catch(...); 
    }).then(...) 
関連する問題