Javascript 如何缩小数组内部的promise函数的范围?
对于我正在进行的项目,我需要使用7个promise函数从API获取数据。我有如下所示的promise函数返回一个数据数组Javascript 如何缩小数组内部的promise函数的范围?,javascript,html,arrays,json,promise,Javascript,Html,Arrays,Json,Promise,对于我正在进行的项目,我需要使用7个promise函数从API获取数据。我有如下所示的promise函数返回一个数据数组 var json1 = new Promise((resolve, reject) => { fetch(url[0]) .then(r => { resolve(r.json())
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]。风速来获取数据,但返回时未定义
下面是我正在使用的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"
}
感谢您的帮助。您需要的是承诺。例如:
考虑到在这种情况下,如果数组中的任何承诺都被拒绝,则.all将不会命中。然后公牛将命中一个.catch
想要得到一个全面的解释,请点击:你需要的是承诺
考虑到在这种情况下,如果数组中的任何承诺都被拒绝,则.all将不会命中。然后公牛将命中一个.catch
要获得全面的解释,请转到:在调用变量时,您的承诺是否已经完成?事实上,这个问题可能会给你一些建议。@k3llydev是的。我很确定它已经完成了。问题是,我没有看到任何针对您的fetch方法的回调,以便在承诺得到解决时开始使用变量。承诺构造函数的经典示例antipattern.return promise.allurl.mapu=>fetchu.thenr=>r.json;在调用变量时,您的承诺是否已经完成?事实上,这个问题可能会给你一些建议。@k3llydev是的。我很确定它已经完成了。问题是,我没有看到任何针对您的fetch方法的回调,以便在承诺得到解决时开始使用变量。承诺构造函数的经典示例antipattern.return promise.allurl.mapu=>fetchu.thenr=>r.json;Promise.all将替换什么?数组中的Promise函数返回数据常量。@WiebeCodeding您可以返回Promise数组并保持函数不变。但是,要解包结果,您需要将函数结果产生到Promise。所有。我有Promise函数工作,但我似乎无法将其返回到call函数。我有函数值{console.logvalues;};但当我输入返回值时,它不会将其返回给调用函数const data=await fetchurlToQuery。我需要补充什么?你能把要点和剩下的代码一起发送过来吗?这样我就可以告诉你哪里是可以解包承诺的地方。Promise.all将替换什么?数组中的承诺函数将返回数据常量。@wiebeconding你可以返回承诺数组并保持函数不变。但是,要解包结果,您需要将函数结果产生到Promise。所有。我有Promise函数工作,但我似乎无法将其返回到call函数。我有函数值{console.logvalues;};但当我输入返回值时,它不会将其返回给调用函数const data=await fetchurlToQuery。我需要补充什么?你能把要点和剩下的代码一起发送过来吗?这样我就可以告诉你哪里是你可以打开承诺的地方。
Promise.all(arrayOfPromises).then((values) => {
//Here you can access the values/properties
values[0].Wind_Speed
})