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);
출력:
20[ 'Hello' ]
위의 예시에서는 throw null
이 어디에도 캡처되지 않고 스크립트는 정상적으로 종료됩니다. 작업 실행기의 에러를 인지하려면 개별적으로 에러 핸들링을 해야 합니다.
.abort()
인스턴스 메서드
.abort
는 모든 작업 실행기의 signal
에 취소 이벤트를 전송하는 함수입니다.
abort(reason?: unknown): void;
매개변수
reason
취소 사유입니다.
반환값
없음.