Добавлен параметр "promiseCancellable" для "wrapPromiseTimeout" - обеспечение корректной обработки промисов, не имеющих методов "isPending" и "cancel"

This commit is contained in:
Mikhail Chechnev 2025-12-01 19:23:46 +03:00
parent 9cd779dd64
commit 62786dcc5a

View File

@ -404,7 +404,7 @@ const getURLProtocol = sURL => {
};
//Обёртывание промиса в таймаут исполнения
const wrapPromiseTimeout = (timeout, promise) => {
const wrapPromiseTimeout = (timeout, promise, promiseCancellable = true) => {
if (!timeout) return promise;
let timeoutPid;
const timeoutPromise = new Promise((resolve, reject) => {
@ -414,7 +414,7 @@ const wrapPromiseTimeout = (timeout, promise) => {
timeoutPid = setTimeout(() => reject(e), timeout);
});
return Promise.race([promise, timeoutPromise]).finally(() => {
if (promise.promise().isPending()) promise.cancel();
if (promiseCancellable && promise.promise().isPending()) promise.cancel();
if (timeoutPid) clearTimeout(timeoutPid);
});
};