Оборачивает асинхронную функцию. При повторных вызовах, все предыдущие функции будут получать сигнал отмены.
Асинхронная функция.
Optional
Возвращаемое значение при отмене. По умолчанию undefined.
undefined
Декорированная асинхронная функция.
const f = promiseNoRace(async () => { return await giveMeFive();}, -1);await Promise.all([f(), f()]); // -1, 5 Copy
const f = promiseNoRace(async () => { return await giveMeFive();}, -1);await Promise.all([f(), f()]); // -1, 5
Если метод api не поддерживает отмену, то можно явно сделать проверки на отмену операции:
const f = promiseNoRace(async () => { const [signal] = CancellationContext.current?.getSignal()!; const result = await giveMeFiveWithNoCancellation(); if (signal.aborted) { return -1; } return result;});await Promise.all([f(), f()]); // -1, 5f.dispose(); Copy
const f = promiseNoRace(async () => { const [signal] = CancellationContext.current?.getSignal()!; const result = await giveMeFiveWithNoCancellation(); if (signal.aborted) { return -1; } return result;});await Promise.all([f(), f()]); // -1, 5f.dispose();
Оборачивает асинхронную функцию. При повторных вызовах, все предыдущие функции будут получать сигнал отмены.