您如何缩小内部和数组中的Promise函数的范围?

问题描述 投票:0回答:1

对于我正在从事的项目,我需要使用7个Promise函数从API获取数据。我有promise函数返回一个数据数组,如下所示。

                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"
  }

感谢任何帮助。

javascript html arrays json promise
1个回答
0
投票

您需要的是Promise.all,例如:

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

请注意,在这种情况下,如果诺言被拒绝,则.all不会被击中.then公牛将被击中.catch

© www.soinside.com 2019 - 2024. All rights reserved.