⊗jsSpPrmInr 162 of 294 menu

JavaScriptте Promisestı kirisiş

Siz bilgeniñizdey, asinxronduktu callback modelin koldonuü callback hell abalına aydooço jetilüüçö. Oşonduktan JavaScriptte promisester (promise) dep atalgan cañı model kirgizildi. Kelgile bul modeldi üyrönölü.

Promise bir ob'ekt bolup, aga parametr retinde içine bizdin asinxronduk kodubuzdu ornoduş kerek bolgon funktsiya berilet:

let promise = new Promise(function() { // asinxronduk kod });

Körünüp turganınday, men promise ob'ektin promise özgörüçüsünö jazdım. Kodduñ başka bir jerinde men bul özgörüçügö then metodun koldonup, içine bul promis jaratılganındagı asinxronduk kod ayaktalgan soñ atkarıluuçü kodu bar funktsiyanı berip alam:

promise.then(function() { // asinxronduk kod ayaktalganda atkarılat });

Tüşünüksüz bolup kalışı mümkün, oşonduktan misalga karabız. Mende tömöndögüdöy asinxronduk kod bar bolsun:

setTimeout(function() { let result = [1, 2, 3, 4, 5]; }, 3000);

Katalık, men aga asinxronduktun negizgi maşelesin çıçam: timer iştegen soñ belli bir kodu atkaruu. Bul kodu timerdin özünün içine ornodbogonumdu jana bul kodo kandaydır bir çeçimde menin result özgörüçüsünö jazgan natıyamdın cetip kelüüsün kaalam. Çınında, bul maşeleni muurunku sabaktarda callbackter jana jazılmalar arqalı çıçkanbız. Kelgile endi bunu promisester arqalı kanday çıçuuçu körölü.

Başta bizdin asinxronduk kodubuzdu promiske orop koyuu kerek:

let promise = new Promise(function() { setTimeout(function() { let result = [1, 2, 3, 4, 5]; }, 3000); });

Birak, bul jetişüüçü emes. Biz asinxronduk kodubuzdun ayaktalganın aykın türdö körsötüübüz kerek. Bunda bizge eger berilse, avtomatik türdö funktsiyanın birinçi parametrine tüşüp kalüuçu ayaktatuu funktsiyası kömök bere alat:

let promise = new Promise(function(resolve) { // parametrdi körsötöbüz setTimeout(function() { let result = [1, 2, 3, 4, 5]; }, 3000); });

Ayaktatuu funktsiyasının jardamı menen biz promisege asinxronduk kod ayaktalganın aykın türdö körsötö alabız. Bunun üçün biz bul funktsiyanı kaysı jerde çağırüübüz kerek bolso oşol jerde çağıruubuz kerek:

let promise = new Promise(function(resolve) { setTimeout(function() { let result = [1, 2, 3, 4, 5]; resolve(); // promisti ayaktatabız }, 3000); });

Egerde biz asinxronduk koddun kandaydır bir natıyasın tışkarıga ötküzüünü kaalasak, biz anı ayaktatuu funktsiyasıbızgı parametr retinde berip koyso bolot:

let promise = new Promise(function(resolve) { setTimeout(function() { let result = [1, 2, 3, 4, 5]; resolve(result); // natıyanı ötköröbüz }, 3000); });

Albet, ara özgörüçüdön kutuluuga bolot:

let promise = new Promise(function(resolve) { setTimeout(function() { resolve([1, 2, 3, 4, 5]); }, 3000); });

Endi kaalagan başka bir jerde biz promisibizdin then metodun çağıra albız:

promise.then(function() { // promise ayaktalganda işteyt });

Promistin işi natıyası eger kaalasaq birinçi parametr retinde berilgen funktsiyagı tüşöt:

promise.then(function(result) { console.log(result); // natıya menen massivdi çıgarat });

Içinde 5 sekund sozulçu bar, andan soñ promise atkarılıp, natıya retinde kandaydır bir tekstti kaytarış kerek bolgon promis jasañız. Bul tekstti ekranğa çıgarıñız.

Кыргызча
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 файлдарын колдонобуз. Маалыматтарды иштетүү Маалыматты коргоо саясаты боюнча жүргүзүлөт.
баарын кабыл алуу ыңгайлаштыруу четке кагуу