javascript - 您如何缩小内部和数组的 promise 功能?

标签 javascript html arrays json promise

对于我正在进行的项目,我需要使用 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];

我可以使用...获取单一 promise 数据

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

考虑到在这种情况下,如果数组中的任何 promise 被拒绝,.all 将不会命中 .then 公牛将命中 .catch

要获得全面的解释,请访问:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all

关于javascript - 您如何缩小内部和数组的 promise 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59491686/

相关文章:

html - 按钮内的文字闪烁

jquery - Django 中的 Bootstrap slider 不起作用

java - 尝试使用数组实现循环队列时出现 ArrayIndexOutOfBoundsException

c++ - 通过请求数组的构造函数初始化子类

java - 从文本文件中检测数组

javascript - 跨文件的 Typescript 全局变量

javascript - 如何在 create()、update() 上从 angularjs-rails-resource 获得确认或回调

javascript - 防止过度滚动

javascript - 如何从 Mongoose 中的多个数组更新数组内的值?

html - 内联div宽度问题