static-injector
Version:
Angular 依赖注入独立版本;Angular dependency injection standalone version
81 lines (80 loc) • 2.75 kB
TypeScript
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.dev/license
*/
import { Observable } from 'rxjs';
import { OnDestroy } from './interface/lifecycle_hooks';
/**
* Internal implementation of the pending tasks service.
*/
export declare class PendingTasksInternal implements OnDestroy {
private taskId;
private pendingTasks;
private destroyed;
private pendingTask;
get hasPendingTasks(): boolean;
/**
* In case the service is about to be destroyed, return a self-completing observable.
* Otherwise, return the observable that emits the current state of pending tasks.
*/
get hasPendingTasksObservable(): Observable<boolean>;
add(): number;
has(taskId: number): boolean;
remove(taskId: number): void;
ngOnDestroy(): void;
/** @nocollapse */
static ɵprov: unknown;
}
/**
* Service that keeps track of pending tasks contributing to the stableness of Angular
* application. While several existing Angular services (ex.: `HttpClient`) will internally manage
* tasks influencing stability, this API gives control over stability to library and application
* developers for specific cases not covered by Angular internals.
*
* The concept of stability comes into play in several important scenarios:
* - SSR process needs to wait for the application stability before serializing and sending rendered
* HTML;
* - tests might want to delay assertions until the application becomes stable;
*
* @usageNotes
* ```ts
* const pendingTasks = inject(PendingTasks);
* const taskCleanup = pendingTasks.add();
* // do work that should block application's stability and then:
* taskCleanup();
* ```
*
*
* @see [PendingTasks for Server Side Rendering (SSR)](guide/zoneless#pendingtasks-for-server-side-rendering-ssr)
*
* @publicApi 20.0
*/
export declare class PendingTasks {
private readonly internalPendingTasks;
private readonly scheduler;
private readonly errorHandler;
/**
* Adds a new task that should block application's stability.
* @returns A cleanup function that removes a task when called.
*/
add(): () => void;
/**
* Runs an asynchronous function and blocks the application's stability until the function completes.
*
* ```ts
* pendingTasks.run(async () => {
* const userData = await fetch('/api/user');
* this.userData.set(userData);
* });
* ```
*
* @param fn The asynchronous function to execute
* @developerPreview 19.0
*/
run(fn: () => Promise<unknown>): void;
/** @nocollapse */
static ɵprov: unknown;
}