Function promiseNoRace

  • Оборачивает асинхронную функцию. При повторных вызовах, все предыдущие функции будут получать сигнал отмены.

    Returns

    Декорированная асинхронная функция.

    Example

    const f = promiseNoRace(async () => {
    return await giveMeFive();
    }, -1);
    await Promise.all([f(), f()]); // -1, 5

    Если метод api не поддерживает отмену, то можно явно сделать проверки на отмену операции:

    Example

    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, 5
    f.dispose();

    Type Parameters

    • P extends unknown[] = []

    • R = void

    Parameters

    • func: ((...params: P) => Promise<R>)

      Асинхронная функция.

        • (...params: P): Promise<R>
        • Parameters

          • Rest ...params: P

          Returns Promise<R>

    • Optional onCancelValue: R

      Возвращаемое значение при отмене. По умолчанию undefined.

    Returns ((...params: P) => Promise<R>) & {
        dispose: VoidFunction;
    }

Generated using TypeDoc