v2.5.2
Giriş yap

Promise.all içinde array kullanma

selim
257 defa görüntülendi

Merhaba,

Aşağıdaki kodda itemIds içerisindeki id ler ile benim fetchProps servisini ne kadar id varsa o kadar kez çalıştırmak istiyorum(itemIds içerisindeki id lerde servisten geliyo. Bu yüzden array uzunluğunu bilmiyorum).

Yani eğer 3 id geldiyse fetchProps(itemIds[0]), fetchProps(itemIds[1]), fetchProps(itemIds[2]) için hepsini tek tek çalıştırmam gerek.

Sizce bunun bir yolu var mı?

    // itemIds = ['383242464326059014', '437788998572704783', '326014610467456002']
Promise.all([this.fetchProps(itemIds[0]), /* diğer servisler */).then([props, /*diğer servisler*/]) => {
  // işlemler
})
Cevap yaz
Cevaplar (3)
devepdogukan
677 gün önce

O da başka bir videonun konusu olsun :D
Şaka bir yana this.fetchProps fonksiyonu eğer promise ise fetchProps(benim son yazdığım) fonksiyonda promise olacaktır. Hepsi aynı sonucu döndürecektir direkt olarak then bloğuyla yakalayıp işlem yaptırabilirsin.

const fetchProps = (id) => this.fetchProps(id).then((response) => console.log(response))
Promise.all([...itemIds.reduce((p,c) => [...p, fetchProps(c)],[])])

selim
677 gün önce

@devepdogukan cevap için teşekkürler. Peki dönen response ları nasıl ayrı ayrı alacağım?

devepdogukan
678 gün önce

reduce fonksiyonu işini görecektir.

const fetchProps = (id) => this.fetchProps(id)
Promise.all([...itemIds.reduce((p,c) => [...p, fetchProps(c)],[])])