การจัดการข้อผิดพลาดในโค้ด TypeScript แบบอะซิงก์
จัดการข้อผิดพลาดแบบอะซิงก์ด้วยตัวห่อหุ้มและยูทิลิตีที่ระบุชนิด
การจัดการข้อผิดพลาดในโค้ด TypeScript แบบอะซิงก์ เป็นบทเรียน TypeScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน TypeScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
ยินดีต้อนรับ
Try-Catch กับ Async/Await
async function loadUser(id: number): Promise<User> {
try {
return await api.getUser(id);
} catch (err: unknown) {
if (err instanceof Error) throw new AppError(err.message);
throw new AppError('Unknown error');
}
}ข้อผิดพลาดของ Promise.all
try {
const [user, posts] = await Promise.all([getUser(id), getPosts(id)]);
} catch (err) { /* one or both failed */ }Promise.allSettled
const results = await Promise.allSettled([getUser(1), getPosts(1)]);
results.forEach(r => {
if (r.status === 'fulfilled') console.log(r.value);
else console.error(r.reason);
});ผลลัพธ์แบบอะซิงโครนัสที่มีชนิด
async function safeGet<T>(fn: () => Promise<T>): Promise<Result<T>> {
try { return { ok: true, value: await fn() }; }
catch (e) { return { ok: false, error: e as Error }; }
}การปฏิเสธที่ไม่ได้จัดการ
process.on('unhandledRejection', (reason: unknown) => {
console.error('Unhandled rejection:', reason);
process.exit(1);
});กำหนดเวลาหมดอายุด้วย Promise.race
function withTimeout<T>(promise: Promise<T>, ms: number): Promise<T> {
const timeout = new Promise<never>((_, reject) =>
setTimeout(() => reject(new Error('Timeout')), ms));
return Promise.race([promise, timeout]);
}รูปแบบการลองใหม่
async function retry<T>(fn: () => Promise<T>, times: number): Promise<T> {
for (let i = 0; i < times; i++) {
try { return await fn(); } catch (e) { if (i === times - 1) throw e; }
}
throw new Error('Unreachable');
}การจัดการข้อผิดพลาดพร้อมกัน
const [userResult, postsResult] = await Promise.allSettled([
getUser(id).then(u => ({ ok: true, value: u })).catch(e => ({ ok: false, error: e })),
getPosts(id).then(p => ({ ok: true, value: p })).catch(e => ({ ok: false, error: e })),
]);การส่งต่อข้อผิดพลาดของ AsyncQueue
async function* generate() {
yield await fetchA();
yield await fetchB(); // error here stops the loop
}
for await (const item of generate()) { process(item); }มิดเดิลแวร์ข้อผิดพลาดแบบมีชนิดใน Next.js
'use server';
async function createUser(data: CreateUserDto): Promise<Result<User>> {
return safeGet(() => db.user.create({ data }));
}ตรวจสอบสั้น ๆ
สรุปทบทวน
คำถามที่พบบ่อย
บทเรียน “การจัดการข้อผิดพลาดในโค้ด TypeScript แบบอะซิงก์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การจัดการข้อผิดพลาดในโค้ด TypeScript แบบอะซิงก์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส TypeScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส TypeScript Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การจัดการข้อผิดพลาดในโค้ด TypeScript แบบอะซิงก์”
จัดการข้อผิดพลาดแบบอะซิงก์ด้วยตัวห่อหุ้มและยูทิลิตีที่ระบุชนิด คุณปฏิบัติ TypeScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน TypeScript Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน TypeScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การจัดการข้อผิดพลาดในโค้ด TypeScript แบบอะซิงก์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน TypeScript Academy นี้ได้ไหม
ได้ บทเรียน TypeScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คลาสข้อผิดพลาดและลำดับชั้นที่ระบุชนิด
- รูปแบบผลลัพธ์: Ok และ Err
- การทำข้อผิดพลาดที่ดักจับให้แคบลง (unknown กับ Error)
- การจัดการข้อผิดพลาดในโค้ด TypeScript แบบอะซิงก์