Я хочу отказаться от обещания, которое я не сделал. То есть примеры, которые я прочитал, описывают что-то вроде этого:
const sample = new Promise((resolve, reject) => {
setTimeout(() => {
reject('fail promise');
}, 1000);
});
, которые отклоняют sample
через 1 с. В моем случае обещание, которое я хочу отклонить, приходит как внешний вызов API, тогда я не могу отклонить таким образом.
Другой прочитанный мной подход показывает, как обещание может быть упаковано с другим, использующим setTimeout, чтобы отклонить новое обещание. Примерно так:
const timeout = new Promise(function(resolve, reject) {
setTimeout(resolve, 1000, 'one');
});
const sample = new Promise(function(resolve, reject) {
setTimeout(resolve, 5000, 'two');
});
return Promise.race([sample, timeout]);
Эта сила 'отклонить' sample
через 1 с, возвращая другое обещание. Это может быть использовано для установки таймаута, но на самом деле он не отклоняет sample
, только возвращает другое обещание, и оригинал продолжает работать, пока не отклонит или не разрешит сам себя.
Я не могу найти, как я могу правильно отклонить обещание без библиотеки