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
중지 사유입니다.
반환값
없음.