2017-01-11 7 views
2

簡単な質問であるべきですが、それを行う方法に関する文書はありません。このような約束をチェーン角2連鎖約束と拒絶の受け渡し

// Making a promise, no problem 
let promise = new Promise((resolve, reject) => { 
    let data = {}; // do something 
    reject(data); 
}); 

// First chain, no problem 
promise.then(data => { 
    console.log('Success callback', data); // This will not be called 
}).catch(err => { 
    console.log('Error callback', err); // This WILL be called 
}) 

// Second chain, acts as resolved 
.then(data => { 
    console.log('Level 2 success', data); // This WILL be called 
}).catch(err => { 
    console.log('Level 2 error', err); // This will NOT be called 
}); 

私は私が最初にcatchコールバックからの拒絶に渡さない限り解決として、その後のthen年代が処理されることを理解しています。

だから... catch関数内でrejectを呼び出す方法は?

答えて

4

は、あなたが第二の鎖を拒否する例えばcatchハンドラで例外をスローする必要がhttps://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch

を参照してください。

// First chain, no problem 
promise.then(data => { 
    console.log('Success callback', data); // This will not be called 
}).catch(err => { 
    console.log('Error callback', err); // This will NOT be called 
    throw "zonk"; 
}) 
+0

明らかに、私はそれが簡単であることを知っていました。したがって、解決されたデータを渡す 'return'と、拒否されたデータを渡す' throw'です。ありがとう! – Zoon

+0

私はエラーを返すだけでした、それを投げていない、感謝のヒープ! –

関連する問題