Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- interface Zone {
- /**
- * Родительская зона
- */
- parent: Zone;
- /**
- * Название зоны (используется для дебагинга)
- */
- name: string;
- /**
- * Возвращает значение ассоциированное с ключом
- *
- * Если в свойствах текущей зоны нет такого ключа, то зона будет искать в родителе
- */
- get(key: string): any;
- /**
- * Если у нас несколько зон, то мы можем искать нужную нам зону через ключ,
- * который мы можем определить в `properties`, этот метод работает рекурсивно
- */
- getZoneWith(key: string): Zone;
- /**
- * Используется для создания дочерней зоны
- */
- fork(zoneSpec: ZoneSpec): Zone;
- /**
- * Оборачивает колбек в новую функцию, которая восстановит текущую зону после вызова
- */
- wrap<F extends Function>(callback: F, source: string): F;
- /**
- * Вызывает колбек в нужной зоне
- */
- run<T>(callback: Function, applyThis?: any, applyArgs?: any[], source?: string): T;
- /**
- * Вызывает колбек в нужной зоне в `try-catch`
- */
- runGuarded<T>(callback: Function, applyThis?: any, applyArgs?: any[], source?: string): T;
- /**
- * Вызывает таск в нужной зоне (о тасках позже)
- */
- runTask(task: Task, applyThis?: any, applyArgs?: any[]): any;
- /**
- * Запланировать микротаск
- */
- scheduleMicroTask(source: string, callback: Function, data?: TaskData, customSchedule?: (task: Task) => void): MicroTask;
- /**
- * Запланировать макротаск
- */
- scheduleMacroTask(
- source: string,
- callback: Function,
- data?: TaskData,
- customSchedule?: (task: Task) => void,
- customCancel?: (task: Task) => void
- ): MacroTask;
- /**
- * Запланировать событийный таск
- */
- scheduleEventTask(
- source: string,
- callback: Function,
- data?: TaskData,
- customSchedule?: (task: Task) => void,
- customCancel?: (task: Task) => void
- ): EventTask;
- /**
- * Запланировать существующий таск
- */
- scheduleTask<T extends Task>(task: T): T;
- /**
- * Позволяет зоне перехватить таск, который отменили
- */
- cancelTask(task: Task): any;
- }
Add Comment
Please, Sign In to add comment