Skip to main content
Youka में हर async ऑपरेशन अंततः एक task के रूप में चलता है, लेकिन प्राथमिक SDK surface अब raw task IDs के बजाय operation handles लौटाता है। अधिकांश कॉलर्स को client.projects.wait(...) या client.exports.wait(...) का उपयोग करना चाहिए और client.tasks.* तक केवल तब पहुँचना चाहिए जब उन्हें low-level task inspection की आवश्यकता हो।

client.tasks.get(taskId, options?)

ID के आधार पर किसी task की वर्तमान स्थिति प्राप्त करें।
const task = await client.tasks.get("tsk_abc123");
console.log(task.status, task.type);

Task statuses

StatusTerminal?Meaning
createdNoTask बन गया है लेकिन अभी queued नहीं हुआ है।
queuedNoTask चलने के लिए इंतज़ार कर रहा है।
in-progressNoTask अभी निष्पादित हो रहा है।
completedYesTask सफलतापूर्वक पूरा हो गया।
finalizedYesTask पूरा हो गया और post-processing हो चुकी है।
failedYesTask किसी त्रुटि के साथ विफल हो गया।
cancelledYesTask रद्द कर दिया गया।
timed-outYesTask ने अपनी time limit पार कर ली।

client.tasks.wait(taskId, options?)

किसी task को poll करें जब तक वह terminal state तक न पहुँच जाए। सफलता पर अंतिम task लौटाता है; विफलता पर YoukaTaskError throw करता है।
const task = await client.tasks.wait("tsk_abc123", {
  pollIntervalMs: 3_000,
  signal: abortController.signal,
});

Options

pollIntervalMs
number
polls के बीच milliseconds। डिफ़ॉल्ट 2000 है।
signal
AbortSignal
wait को abort करें। in-flight request और कोई भी pending delay तुरंत cancel कर दिए जाते हैं।

Errors

जब task failed, cancelled, या timed-out पर समाप्त होता है, तो client.tasks.wait(...) YoukaTaskError throw करता है:
import { YoukaTaskError } from "@youka/sdk";

try {
  await client.tasks.wait("tsk_abc123");
} catch (error) {
  if (error instanceof YoukaTaskError) {
    console.error(error.code); // TASK_FAILED | TASK_CANCELLED | TASK_TIMED_OUT
    console.error(error.task); // Full RestTask payload
  }
  throw error;
}

client.projects.wait(operation, options?)

किसी project-scoped operation के पूरा होने की प्रतीक्षा करें, फिर project को दोबारा fetch करें। operation handle, terminal task, और updated project लौटाता है।
const operation = await client.projects.create({
  source: { type: "path", path: "./song.mp3" },
});

const { project, task } = await client.projects.wait(operation, {
  pollIntervalMs: 2_500,
});

console.log("Project ready:", project.id);
console.log("Task finished in state:", task.status);
operation
ProjectOperation
required
आम तौर पर client.projects.create(...), client.projects.separateStems(...), या client.projects.syncLyrics(...) का परिणाम।

client.exports.wait(operationOrId, options?)

किसी cloud export के terminal state तक पहुँचने की प्रतीक्षा करें। client.exports.create(...) द्वारा लौटाया गया ExportOperation या exportId string में से कोई एक पास करें।
const operation = await client.exports.create("prj_abc123", {
  resolution: "1080p",
  quality: "high",
});

const finalized = await client.exports.wait(operation, {
  pollIntervalMs: 3_000,
});

console.log(finalized.status, finalized.url);

Cancellation

लंबे समय तक चलने वाले wait को cancel करने के लिए AbortSignal पास करें:
const controller = new AbortController();

setTimeout(() => controller.abort(), 60_000);

try {
  await client.projects.wait(operation, { signal: controller.signal });
} catch (error) {
  if (error instanceof Error && error.name === "AbortError") {
    console.log("Wait cancelled after 60s");
  } else {
    throw error;
  }
}
वही signal underlying task या export polling request को भी cancel कर देता है।

What’s next

  • ErrorsYoukaTaskError और retryable errors को handle करें
  • Exports — किसी export के पूरा होने की प्रतीक्षा करें
  • API async jobs — raw HTTP में वही pattern