TESSA Web API
    Preparing search index...

    Function promiseNoRace

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

      Type Parameters

      • P extends unknown[] = []
      • R = void

      Parameters

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

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

      • OptionalonCancelValue: R

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

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

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

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