2017-01-11 3 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 «s будут обрабатываться как решенное.

Итак ... как вызвать отказ от функции catch?

ответ

4

См 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

Я только возвращал ошибку, не бросая ее, спасибо кучи! –

Смежные вопросы