⊗jsSpPrmFC 171 of 294 menu

JavaScript'te Çözülmüş Promise'ler Oluşturma

Bazen zaten çözülmüş bir promise oluşturmanız gerekebilir. Bunun için iki yöntem vardır: Promise.resolve yöntemi başarıyla çözülmüş bir promise oluşturur, Promise.reject yöntemi ise reddedilmiş bir promise oluşturur. Bu yöntemler parametre olarak, sırasıyla promise'in sonucu veya hatası olacak şeyi alır.

Zaten çözülmüş bir promise ne zaman gerekli olabilir? Bir örnek üzerinden inceleyelim. Bir sayıyı parametre olarak alan, onunla eşzamansız olarak bir şeyler yapan ve sonuçla birlikte bir promise döndüren bir fonksiyonumuz olsun:

function func(num) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); }

Fonksiyonumuzu şu şekilde kullanacağız:

func(5).then(function(res) { console.log(res); // 25 yazdıracak });

Şimdi diyelim ki, eşzamansız işlemi yalnızca sıfırdan büyük bir sayı verilirse gerçekleştirmeye karar verdik. Aksi takdirde, fonksiyonun sonucu sıfır olmalı:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return 0; // sıfır sonuç } }

Ancak, şimdi fonksiyonun bir promise VEYA bir sayı döndürdüğü ortaya çıkıyor. Bu nedenle, fonksiyonun sonucuna then yöntemini artık uygulayamayız, çünkü fonksiyon bir sayı döndürdüğünde bir hata alırız:

func(0).then(function(res) { // hata, then metodunu sıfıra uyguluyoruz });

Bu sorunu Promise.resolve ile düzeltebiliriz:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else { return Promise.resolve(0); // sayı değil, promise döndürüyoruz } }

Şimdi diyelim ki, iletilen sıfır için sıfır döndürmemiz, sıfırdan küçük sayılar için ise bir istisna oluşturmamız gerektiğine karar verdik. Bu durumda Promise.reject yöntemi bize yardımcı olacaktır:

function func(num) { if (num > 0) { return new Promise(function(resolve) { setTimeout(function() { resolve(num * num); }, 3000); }); } else if (num === 0) { return Promise.resolve(0); } else { return Promise.reject('incorrect number'); // reddedilmiş bir promise döndür } }
Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet