컨텐츠로 건너뛰기

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

취소 사유입니다.

반환값

없음.