对于我正在从事的项目,我需要使用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"
}
感谢任何帮助。
您需要的是Promise.all
,例如:
Promise.all(arrayOfPromises).then((values) => {
//Here you can access the values/properties
values[0].Wind_Speed
})
请注意,在这种情况下,如果诺言被拒绝,则.all
不会被击中.then
公牛将被击中.catch
。