컨텐츠로 건너뛰기

TaskQueue

TaskQueue는 비동기 작업을 관리하는 클래스입니다. 동시 실행을 제어하는 방법은 없습니다. 모든 태스크 러너는 비동기적으로 실행됩니다.

import

import { TaskQueue } from "@tai-kun/surrealdb/utils";

.constructor()

new TaskQueue();

매개변수

없음.

반환값

new를 통해 호출될 경우, TaskQueue는 자신의 인스턴스를 반환합니다.

.count 인스턴스 속성 읽기 전용

현재 큐에 추가된 태스크 러너의 수를 나타냅니다.

.add() 인스턴스 메서드

.add는 태스크 러너를 큐에 추가합니다.

add<T>(
runner: (args: TaskRunnerArgs) => T | PromiseLike<T>,
options?: TaskOptions,
): StatefulPromise<T>;

매개변수

runner

태스크 러너입니다. 태스크 러너의 인수에는 중지 신호 signal을 포함하는 TaskRunnerArgs가 전달됩니다.

options

태스크 러너의 옵션입니다. 이 태스크 러너의 중지 신호를 전달할 수 있습니다.

반환값

태스크 러너의 반환값으로 해결되는 StatefulPromise를 반환합니다.

예시

import { TaskQueue } from "@tai-kun/surrealdb/utils";
const queue = new TaskQueue();
const promise = queue.add(async ({ signal }) => {
const response = await fetch("https://example.com/", { signal });
return await response.text();
});
const text = await promise;
console.log(text);

.idle() 인스턴스 메서드

.idle은 큐가 빌 때까지 대기하기 위한 함수입니다. 큐에서 태스크 러너가 제거되는 것은 태스크 러너가 해결/거부 여부와 상관없이 완료 직후입니다. 따라서 큐가 비어 있다는 것은 모든 태스크 러너의 실행이 완료되었음을 의미합니다.

idle(): StatefulPromise<void>;

매개변수

없음.

반환값

void로 해결되는 StatefulPromise를 반환합니다.

예시

다음 예시는 큐에 추가한 태스크 러너의 해결/거부 여부와 관계없이 종료될 때까지 기다립니다:

import { TaskQueue } from "@tai-kun/surrealdb/utils";
const queue = new TaskQueue();
const results: string[] = [];
queue.add(async () => {
results.push("Hello");
});
queue.add(() => {
throw null;
});
console.log(queue.count);
await queue.idle();
console.log(queue.count);
console.log(results);

출력:

2
0
[ 'Hello' ]

위의 예시에서 throw null은 어디에도 캡처되지 않고, 스크립트는 정상적으로 종료됩니다. 태스크 러너의 에러를 인지하려면, 개별적으로 에러 핸들링을 해야 합니다.

.abort() 인스턴스 메서드

.abort는 모든 태스크 러너의 signal에 중지 이벤트를 전송하는 함수입니다.

abort(reason?: unknown): void;

매개변수

reason

중지 사유입니다.

반환값

없음.