Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何缩小数组内部的promise函数的范围?_Javascript_Html_Arrays_Json_Promise - Fatal编程技术网

Javascript 如何缩小数组内部的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())

对于我正在进行的项目,我需要使用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]。风速来获取数据,但返回时未定义

下面是我正在使用的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
})