簡體   English   中英

如何在 Promise.all 中獲取數據以等待另一個有條件的 fetch 語句的結果

[英]How to get fetches in a Promise.all to await the result of another fetch statement that is conditional

我有一個conditional fetch ,它確定URL的一部分用於后續fetch ,但我只希望它在某些條件下運行。

以下不等待並立即運行try

async function fetchURLs() {
let sessionWait = false;
  if ((check1 === true) && (check2 === false)) 
        {sessionWait = await getURL();
        } else {sessionWait = true}

  if (sessionWait === true){ 
  try {
    var [a, b, c] = await Promise.all([

      fetch(dataUrl, {
        headers: {
          'Accept': 'application/json',
          'Content-Type': 'application/json'
        },
        method: 'post',
      }).then((response) => response.text()).catch(error => console.log(error.message)),
      fetch(settingsUrl).then((response) => response.text()).catch(error => console.log(error.message))

  } catch (error) {
    console.log(error);
  }

});
}

async function getURL(){

   let subDomain = 'a';

   fetchAdd = "https://" + subDomain + ".dexcom.com/ShareWebServices/Services/General/LoginPublisherAccountByName"
  await fetch(fetchAdd, {
    method: 'POST',  
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json'
    },
   }).then((res) => res.json()).then((SessionData) => dataUrl = "https://" + SessionData).catch(error => console.log(error.message));

 return true;
}

 const tasks = getTaskArray();
 return tasks.reduce((promiseChain, currentTask) => {
 return promiseChain​.​then​(​chainResults =>
    currentTask​.​then​(​currentResult =>
        [ ...chainResults, currentResult ] )
  );
  }, Promise​.​resolve​([])).​then​(​arrayOfResults => {
  // Do something with all results
 });

此鏈接可能會對您有所幫助。 https://decembersoft.com/posts/promises-in-serial-with-array-reduce/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM