Middle+
Фарқи татбиқи асинхронӣ дар C# ва JavaScript чист?
sobes.tech AI
Ҷавоб аз AI
Дар C# асинхронӣ асос ёфтааст ба вазифаҳо (Task), ки аз пули сӯрохиҳои корӣ барои иҷрои амалҳо истифода мебаранд, бе бастани сӯрохи асосӣ. Калимаву калидвожаҳои async ва await навишти коди асинхронро содда мекунанд, имкон медиҳанд, ки иҷрои методро дар вақти зарурӣ боздошта ва такмил дод.
Дар JavaScript, асинхронӣ тавассути даврзанӣ (Event Loop) ва муҳаррики як сӯрохи амалӣ мешавад. Амалҳои асинхронӣ (масалан, дархостҳои HTTP, таймерҳо) дар навбат гузошта мешаванд ва вақте сӯрохи асосӣ холӣ аст, иҷро мешаванд. Аксар вақт callbacks, promises (Promise) ва синтаксис async/await дар асоси promises истифода мешаванд.
Тафовутҳои асосӣ:
- Асос: C# - вазифаҳо ва пул сӯрохиҳо, JavaScript - даврзанӣ ва як сӯрохи.
- Параллелизм: C# метавонад амалҳоро дар параллел дар сӯрохиҳои гуногун иҷро кунад. JavaScript дар асоси, як сӯрохи аст, ва параллелизм бо роҳҳои дигар (масалан, Web Workers) ба даст меояд.
- Синтаксис: Ҳар ду
async/await-ро истифода мебаранд, аммо механизмҳои зерсохт фарқ мекунанд.
// C# - Метод асинхрон, ки Task-ро бармегардонад
public async Task<string> GetDataAsync()
{
// Имитацияи кори асинхрон
await Task.Delay(1000);
return "Маълумот аз C#";
}
// JavaScript - Функсияи асинхрон, ки Promise-ро бармегардонад
async function getDataAsync() {
// Имитацияи кори асинхрон
await new Promise(resolve => setTimeout(resolve, 1000));
return "Маълумот аз JavaScript";
}