How you sounded
You talked
38%
Of the call’s spoken time.
Filler words
7
About 0.2 a minute.
Longest stretch
1 min 14 sec
The longest you spoke without break.
Preserveinputorder,stopschedulingonfailure,andsupportcancellation.
취업 면접을 위한 Sayli
내 프로젝트를 바탕으로, 어려운 질문에도 생각을 명확히 설명하세요.
제품 예시는 영어로 표시됩니다.
Use a shared index and a fixed pool of workers. Each worker claims its index before awaiting, so two workers cannot claim the same item.
async function mapLimit<T, R>(
items: readonly T[],
limit: number,
run: (item: T, signal?: AbortSignal) => Promise<R>,
signal?: AbortSignal,
): Promise<R[]> {
if (!Number.isInteger(limit) || limit < 1)
throw new RangeError('limit must be a positive integer');
signal?.throwIfAborted();
const results = new Array<R>(items.length);
let next = 0;
let failed = false;
async function worker() {
while (!failed) {
signal?.throwIfAborted();
const i = next++;
if (i >= items.length) return;
try {
results[i] = await run(items[i], signal);
} catch (error) {
failed = true;
throw error;
}
}
}
await Promise.all(Array.from(
{ length: Math.min(limit, items.length) }, worker,
));
return results;
}Why it works: results are written by input index, not completion order. At most limit calls are in flight. A rejection stops new work; already-running tasks finish unless their implementation honours the abort signal.
Edge cases: empty input, a limit larger than the input, out-of-order completion, a rejected task, and cancellation before or during the call. Time is O(n) bookkeeping plus the async work; result storage is O(n).
질문, 내 답변, 다음에 준비할 내용까지 남겨두세요.
결정은 남기고, 약속은 기억하세요.
무료로 시작하세요. 필요한 순간에 내 맥락을 바로.