گاهی کد async/await خیلی شلوغ میشه چون پر از try/catch تکراریه. یه الگوی جمعوجور میتونه هم کد رو تمیز کنه، هم مدیریت خطاها رو واضحتر کنه.
ایده اینه: بهجای try/catch دور هر await، یه helper کوچک مینویسیم که همیشه نتیجه رو به شکل یک آرایه برگردونه: [err, data]. شبیه سبک Node.js، ولی مدرن و تمیز 😎
نکات مهم ✅
• ساختار کنترل خطا توی تابع مشخص و خطی میمونه، بدون چندین try/catch تو در تو.
• میشه این الگو رو برای هر Promise (مثل عملیات دیتابیس، fetch، کار با فایل در Node.js و ...) دوباره استفاده کرد.
• حواست باشه همیشه یا هر دو مقدار [err, data] رو destructure کنی، یا حداقل err رو چک کنی تا Memory Leak یا رفتار غیرمنتظره نگیری.
برای ساخت API تمیز و قابل تست، این الگو کنار TypeScript یا JSDoc خیلی خوب جواب میده، چون نوع خروجی همیشه قابل پیشبینی و یکنواخته.
امتحان این pattern روی فانکشنهای async کوچیک شروع میشه، بعد کمکم میتونه تبدیل بشه به style اصلیت برای هندل کردن Promiseها 🙌
مرجع بیشتر درباره Promise و خطاها تو MDN:
MDN - Promise
🔖 #Javascript #JS #جاوااسکریپت #JavaScript #async_await #Promise #error_handling #ES6
👤 Developix
💎 Channel: @DevelopixJavascript
ایده اینه: بهجای try/catch دور هر await، یه helper کوچک مینویسیم که همیشه نتیجه رو به شکل یک آرایه برگردونه: [err, data]. شبیه سبک Node.js، ولی مدرن و تمیز 😎
const to = (promise) => promise
.then((data) => [null, data])
.catch((err) => [err, null]);
async function fetchUser(userId) {
const [err, res] = await to(
fetch(`https://api.example.com/users/${userId}`)
);
if (err) {
console.error('خطا در درخواست:', err);
return null;
}
const [parseErr, data] = await to(res.json());
if (parseErr) {
console.error('خطا در parse کردن JSON:', parseErr);
return null;
}
return data;
}
نکات مهم ✅
• ساختار کنترل خطا توی تابع مشخص و خطی میمونه، بدون چندین try/catch تو در تو.
• میشه این الگو رو برای هر Promise (مثل عملیات دیتابیس، fetch، کار با فایل در Node.js و ...) دوباره استفاده کرد.
• حواست باشه همیشه یا هر دو مقدار [err, data] رو destructure کنی، یا حداقل err رو چک کنی تا Memory Leak یا رفتار غیرمنتظره نگیری.
برای ساخت API تمیز و قابل تست، این الگو کنار TypeScript یا JSDoc خیلی خوب جواب میده، چون نوع خروجی همیشه قابل پیشبینی و یکنواخته.
امتحان این pattern روی فانکشنهای async کوچیک شروع میشه، بعد کمکم میتونه تبدیل بشه به style اصلیت برای هندل کردن Promiseها 🙌
مرجع بیشتر درباره Promise و خطاها تو MDN:
MDN - Promise
🔖 #Javascript #JS #جاوااسکریپت #JavaScript #async_await #Promise #error_handling #ES6
👤 Developix
💎 Channel: @DevelopixJavascript
❤5👎2🔥1