@docsvision/webclient
Version:
Type definitions for DocsVision WebClient scripts and extensions.
43 lines (42 loc) • 2.84 kB
TypeScript
import { LoadingState, LoadingStatus } from "@docsvision/webclient/System/LoadingState";
import { IBasicEvent } from "@docsvision/webclient/System/IBasicEvent";
/**
* Класс для выполнения длительных операций, предотвращающий повторный запуск одной и той же операции.
* Для каждой операции должен быть создан отдельный экземпляр класса.
*/
export declare class RequestHelper {
private mLoadingState;
private mLastQuery;
private mStateChanged;
private mLoaderDelay;
private mPreventConcurrentQueries;
constructor(onStateChanged?: (state?: LoadingState) => void, loaderDelay?: number, preventConcurrent?: boolean);
/**
* Вызывает sendFunc и обновляет {@link state} по мере выполнения запроса. Если предыдущий запрос не был завершен, вызов будет проигнорирован.
* @param sendFunc Функция, выполняющая длительную операцию.
* @param done Функция, которая будет вызвана в случае успешного завершения операции.
* @param fail Функция, которая будет вызвана в случае ошибки.
* @param concurrentPrevented Функция, которая будет вызвана в случае, если запрос уже выполняется.
*/
send<T>(sendFunc: () => Promise<T>, done?: (data: T) => void, fail?: (err: any) => void, concurrentPrevented?: () => void): LoadingState;
/**
* Перегрузка {@link send}, на основе Promise.
*/
sendEx<T>(sendFunc: () => Promise<T>, done?: (data: T) => void, fail?: (err: any) => void): LoadingState;
/** Событие, возникающее при изменении статуса выполнения операции. */
get stateChanged(): IBasicEvent<LoadingState>;
/** Текущее состояние операции. Может быть передано в {@link LoadingIcon} как параметр. */
get state(): LoadingState;
/** Текущее состояние операции (равносильно state.status). */
get status(): LoadingStatus;
/** Операция находится в процессе выполнения. */
get loading(): boolean;
/** Операция завершилась с ошибкой. */
get error(): boolean;
/** Операция завершилась успешно. */
get done(): boolean;
/** @deprecated Используйте promise */
get deferred(): Promise<any>;
/** @internal */
get promise(): Promise<any>;
}