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