Sobes.tech
Junior

Promise.all ne işe yarar?

sobes.tech yapay zeka

AI'dan gelen yanıt

Promise.all, bir dizge veya başka bir yineleyici nesne kabul eder ve yeni bir söz verir. Bu yeni söz, tüm iletilen sözler başarıyla tamamlandığında çalışır. Sonuç, iletilen her sözün sonuçlarına karşılık gelen, aynı sıradaki değerleri içeren bir dizi olacaktır.

Eğer en az biri iletilen söz reddedilirse, Promise.all derhal reddedilir ve ilk reddedilen sözün nedeni ile reddedilir.

Uygulamalar:

  • Birbirine bağımlı olmayan birkaç asenkron işlemin eşzamanlı yürütülmesi.
  • Bir dizi işlemin tamamlanmasını bekleyip, ardından bir sonraki adıma geçmek.

Örnek:

async function fetchData() {
  const urls = [
    'https://api.example.com/data1',
    'https://api.example.com/data2',
    'https://api.example.com/data3',
  ];

  try {
    // Aynı anda birkaç URL'den veri yükleme
    const responses = await Promise.all(urls.map(url => fetch(url)));

    // Her yanıtın başarılı olup olmadığını kontrol et
    for (const response of responses) {
      if (!response.ok) {
        // Yanıt başarısızsa, hata fırlat
        throw new Error(`HTTP hatası! durum: ${response.status}`);
      }
    }

    // Tüm yanıtları JSON'a dönüştür
    const jsonData = await Promise.all(responses.map(response => response.json()));

    // Artık jsonData, tüm isteklerin sonuçlarını içeren bir dizi
    console.log(jsonData);

  } catch (error) {
    // Hata, herhangi bir söz reddedilirse (Fetch veya JSON.parse)
    console.error('Veri alınırken hata:', error);
  }
}

fetchData();