Я создал долгоиграющую Promise
, которую я обертываю с помощью этой простой функции, которую я создал, чтобы создать часы для гонки Promise
.
Ниже приведена функция:
export const promiseTimeout = (
promise,
timeoutMs = 10000, //10 secs
message = 'Timeout reached, please try again',
) =>
Promise.race([
promise,
new Promise((resolve, reject) =>
setTimeout(() => {
reject(message);
}, timeoutMs),
),
]);
Я планирую использовать ее так, что я пропущу долгосрочную Promise
, которая может потребовать других непредсказуемых ресурсов, таких как Интернет,файл, настройки системы и т. д.
Использование будет выглядеть следующим образом:
const result = await promiseTimeout(longRunningFunction())
.catch(err => /* do something with the error , show toast or alert */);;
В настоящее время происходит следующее: каждый раз, когда истекает тайм-аут, вызывается перехват, но операция longRunningFunction все еще будет продолжаться.
Как я могу остановить операции над переданным аргументом Promise
, если истечет время ожидания?