Ama bunu yapmanın doğru yolu bu değil gibi görünüyor ..
Bu gerçekten (ya da en azından bunu yapmak için uygun bir yoldur bir bunu yapmak için uygun bir yol). Bu, vaatlerin önemli bir yönüdür, bunlar bir ardışık düzen ve veriler, ardışık düzenteki çeşitli işleyiciler tarafından masaj yapılabilir.
Misal:
const promises = [
new Promise(resolve => setTimeout(resolve, 0, 1)),
new Promise(resolve => setTimeout(resolve, 0, 2))
];
Promise.all(promises)
.then(data => {
console.log("First handler", data);
return data.map(entry => entry * 10);
})
.then(data => {
console.log("Second handler", data);
});
( catch
işleyici kısalık nedeniyle ihmal edildi. Üretim kodunda, her zaman ya sözü iletin ya da reddi ele alın.)
Buradan gördüğümüz çıktı:
İlk işleyici [1,2]
İkinci işleyici [10,20]
... çünkü ilk işleyici iki vaatin ( 1
ve 2
) çözümünü bir dizi olarak alır ve sonra her biri 10 ile çarpılan yeni bir dizi oluşturur ve onu döndürür. İkinci işleyici, ilk işleyicinin döndürdüğünü alır.
Yaptığınız ek iş senkron ise, ayrıca koyabilirsiniz içinde ilk işleyicisi:
Misal:
const promises = [
new Promise(resolve => setTimeout(resolve, 0, 1)),
new Promise(resolve => setTimeout(resolve, 0, 2))
];
Promise.all(promises)
.then(data => {
console.log("Initial data", data);
data = data.map(entry => entry * 10);
console.log("Updated data", data);
return data;
});
... ancak eşzamansızsa, iç içe geçeceği için bunu yapmak istemezsiniz ve yuvalama hızla kontrolden çıkabilir.
reject
ilkPromise
işlevden sonra bir değer elde etmek mümkün değil mi? Ya da zincirin herhangi bir yerinde bir hata atmak sizi.catch()
? Eğer durum buysa,reject
ilk etapta ne anlamı var ? Neden sadece hata atmıyorsun? Tekrar teşekkürler,