簡體   English   中英

你如何縮小內部和數組的承諾函數?

[英]How do you narrow down a promise function that is inside and array?

對於我正在處理的項目,我需要使用 7 個 promise 函數從 API 獲取數據。 我有承諾函數返回一個數據數組,如下所示。

                var json1 = new Promise((resolve, reject) => {
                    fetch(url[0])
                    .then(r => {
                        resolve(r.json())
                    })
                    .catch(err => {
                        reject(err)
                    })
                })
                var json2 = new Promise((resolve, reject) => {

                    fetch(url[1])
                    .then(r => {
                        resolve(r.json())
                    })
                    .catch(err => {
                        reject(err)
                    })
                })
                //code is repeated with different links until json7
            return [json1,json2,json3,json4,json5,json6,json7];

我可以使用...

const data = await fetchURL(urlToQuery())
var dataBP = data[0];

但是,我無法縮小此 Promise 數據中的 JSON 范圍。 我以前使用dataBP[0].Wind_Speed來獲取數據,但它返回undefined

這是我正在使用的 JSON 示例。

  {
    "Wind_Speed": "9.0",
    "Air_Temp": "3.7",
    "Solar_Energy": "0.0",
    "Low_Air_Temp": "3.7",
    "Dew_Point": "2.0",
    "Solar_Rad": "0.0",
    "Rain_Rate": "0.0",
    "Rel_Humidity": "89.0",
    "Atm_Pres": "28.348",
    "Station_ID": "Buckingham Point",
    "DateTime_UTC": "2019-12-26 16:15:00",
    "Hi_Wind_Speed": "12.0",
    "Wind_Dir": "NW",
    "Rain": "0.0",
    "Hi_Wind_Speed_Dir": "WSW",
    "Hi_Air_Temp": "3.9"
  }

任何幫助表示贊賞。

你需要的是Promise.all像:

Promise.all(arrayOfPromises).then((values) => {
  //Here you can access the values/properties
  values[0].Wind_Speed
})

考慮到在這種情況下,如果陣列中的任何承諾被拒絕.all不會碰到.then公牛將達到.catch

有關全面的解釋,請訪問: https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

暫無
暫無

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

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