2017-01-10 4 views
5
var promise1 = new Promise(function(resolve, reject) { 
     // ajax api call 
}); 
var promise2 = new Promise(function(resolve, reject) { 
     // ajax api call 
}); 

Я хочу быть в состоянии сделать что-то вроде -Как отменить обещание в javascript?

if(a < b) { 
    promise1.cancel(); 
} 
+5

Обещания не подлежат аннулированию. [Предложение] (https://github.com/tc39/proposal-cancelable-promises) для добавления этой функции было снято из-за противодействия Google. –

+0

Взгляните на этот вопрос - http://stackoverflow.com/questions/29478751/how-to-cancel-an-emcascript6-vanilla-javascript-promise-chain –

+0

Посмотрите здесь: http://stackoverflow.com/questions/30233302/agreement-is-it-possible-to-force-cancel-a-prom –

ответ

2

Вы не можете отменить обещание, но вы можете цепи свои обещания с then и отклонять в любой момент.

new Promise((resolve, reject) => { 
    // step 1 
}) 
.then((result) => { 
    if (!result) { 
     // Reject the promise chain 
     throw 'cancel'; 
    } else { 
     return ... // step 2 
    } 
}) 
.catch(err => { 
    // cancelled 
}); 
Смежные вопросы