⊗jsSpPrmSS 174 of 294 menu

Промисҳо дар услуби синхронӣ дар JavaScript

Барои ҳалли мушкили promise hell синтаксиси махсуси промисҳо ихтироъ шуд, ки имкон медиҳад коди асинхрониро хеле осонтар - дар услуби синхронӣ навишт.

Биёед омӯзиши онро оғоз кунем. Аввал коди аз дарси гузаштаро мегирем:

function func() { getSmth(2).then(res => { console.log(res); // 4-ро хориҷ мекунад }); } func();

Агар функсияи мо getSmth синхронӣ мебуд, пас коди функсияи func мо метавонистем ба таври зерин нависем:

function func() { let res = getSmth(2); console.log(res); // 4-ро хориҷ мекунад }

Функсияи getSmth, аммо, асинхронӣ аст, бинобарин коди боло овоз нахоҳад дод. Аммо, бо истифода аз услуби синхронии промисҳо, мо метавонем чизи монанд ба даст орем. Биёед ин корро кунем.

Барои оғоз мо бояд функсияи худро func асинхронӣ бо ёрии фармони махсус async эълон кунем:

async function func() { }

Пас аз ин мо дар дохили функсияи func метавонем фармони махсуси await-ро истифода барем. Ин фармон, ки пеш аз промис навишта мешавад, JavaScript-ро маҷбур мекунад интизор шавад то вақте ки промис иҷро нашавад. Пас аз он фармон бармегардад натиҷаи промисро, ва иҷрои код идома хоҳад ёфт.

Дар ҳолати мо мо бояд await нависем пеш аз фарохонӣ кардани getSmth. Аз он ҷое ки натиҷаи фарохонӣ кардани ин функсия промис хоҳад буд, пас иҷрои минбаъдаи код фақат пас аз иҷро шудани ҳамин промис идома хоҳад ёфт. Хуб, натиҷаи промисро ба тағирёбанда сабт кардан мумкин аст. Биёед он чиро ки тавсиф шуд анҷом диҳем:

async function func() { let res = await getSmth(2); console.log(res); // 4-ро хориҷ мекунад } func();

Биёед getSmth-ро чанд маротиба фаро хонем:

async function func() { let res1 = await getSmth(2); let res2 = await getSmth(3); console.log(res1 + res2); // 13-ро хориҷ мекунад } func();

Ва акнун getSmth-ро дар ҳалқа фаро хоҳем хонд:

async function func() { let arr = [1, 2, 3, 4, 5]; let sum = 0; for (let elem of arr) { sum += await getSmth(elem); } console.log(sum); } func();

Коди зеринро тавассути синтаксиси синхронӣ нависед:

function func() { getSmth(2).then(res1 => { getSmth(3).then(res2 => { getSmth(4).then(res3 => { console.log(res1 + res2 + res3); }); }); }); } func();
Тоҷикӣ
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мо барои коркарди сомона, таҳлил ва шахсӣ кардан аз cookie истифода мебарем. Коркарди маълумот мувофиқи Сиёсати махфият сурат мегирад.
ҳамаро қабул кардан танзим кардан рад кардан