forked from CITKParus/P8-ExchangeService
Добавлен параметр "promiseCancellable" для "wrapPromiseTimeout" - обеспечение корректной обработки промисов, не имеющих методов "isPending" и "cancel"
This commit is contained in:
parent
9cd779dd64
commit
62786dcc5a
@ -404,7 +404,7 @@ const getURLProtocol = sURL => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
//Обёртывание промиса в таймаут исполнения
|
//Обёртывание промиса в таймаут исполнения
|
||||||
const wrapPromiseTimeout = (timeout, promise) => {
|
const wrapPromiseTimeout = (timeout, promise, promiseCancellable = true) => {
|
||||||
if (!timeout) return promise;
|
if (!timeout) return promise;
|
||||||
let timeoutPid;
|
let timeoutPid;
|
||||||
const timeoutPromise = new Promise((resolve, reject) => {
|
const timeoutPromise = new Promise((resolve, reject) => {
|
||||||
@ -414,7 +414,7 @@ const wrapPromiseTimeout = (timeout, promise) => {
|
|||||||
timeoutPid = setTimeout(() => reject(e), timeout);
|
timeoutPid = setTimeout(() => reject(e), timeout);
|
||||||
});
|
});
|
||||||
return Promise.race([promise, timeoutPromise]).finally(() => {
|
return Promise.race([promise, timeoutPromise]).finally(() => {
|
||||||
if (promise.promise().isPending()) promise.cancel();
|
if (promiseCancellable && promise.promise().isPending()) promise.cancel();
|
||||||
if (timeoutPid) clearTimeout(timeoutPid);
|
if (timeoutPid) clearTimeout(timeoutPid);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user