Javascript 从获取的WMS GetCapabilities请求返回数组

Javascript 从获取的WMS GetCapabilities请求返回数组,javascript,arrays,openlayers,wms,Javascript,Arrays,Openlayers,Wms,我试图从WMS层返回一个时间值数组,我必须在Openlayers中填充一个下拉菜单。我已经能够在函数内的层中获取时间值列表(并将此输出打印到函数中的控制台),但无法从函数中获取此数组。目前的代码如下: var url = **working_WMS_url** var GetCaps = new ol.format.WMSCapabilities(); fetch(url).then(function(response) { return response.text();

我试图从WMS层返回一个时间值数组,我必须在Openlayers中填充一个下拉菜单。我已经能够在函数内的层中获取时间值列表(并将此输出打印到函数中的控制台),但无法从函数中获取此数组。目前的代码如下:

var url = **working_WMS_url**

var GetCaps = new ol.format.WMSCapabilities();
fetch(url).then(function(response) {
      return response.text();
    }).then(function(text) {
      var result = GetCaps.read(text);
      var times = result.Capability.LayerLayer[0].Dimension;
      return times;
});
console.log(times);

// Section below links and populates dropdown menu
var time_list = document.getELementById("time_list");

for(var i = 0; i < times.length; i++) {
    var opt = times[i];
    var el = document.createElement("option");
    el.textContent = opt;
    el.value = opt;
    time_list.appendChild(el);
}
var url=**working\u WMS\u url**
var GetCaps=new ol.format.WMSCapabilities();
获取(url)。然后(函数(响应){
返回response.text();
}).然后(函数(文本){
var result=GetCaps.read(文本);
var times=result.Capability.LayerLayer[0]。维度;
返回次数;
});
console.log(次);
//下面的部分链接并填充下拉菜单
var time_list=document.getELementById(“time_list”);
对于(var i=0;i
为了确认下拉菜单是否正常工作,我使用手动定义的时间集进行了测试。我就是不明白为什么函数不返回“times”列表


为清楚起见,我对javascript比较陌生,但一般不懂编码,因此如果有非常简单的解决方案,我深表歉意。我已经花了一个小时查看了StackOverflow问题,但找不到一个能准确回答这个问题的问题。

fetch异步运行,因此所有依赖于从url读取的文本的处理都应该在fetch的最后一个
then
子句中

另一种方法(并非所有浏览器都支持)是将调用函数声明为异步并使用WAIT语句

async function myFunction(url, elenentId) {

  var GetCaps = new ol.format.WMSCapabilities();
  var times = await fetch(url).then(function(response) {
      return response.text();
    }).then(function(text) {
      var result = GetCaps.read(text);
      var times = result.Capability.LayerLayer[0].Dimension;
      return times;
  });
  console.log(times);

  // Section below links and populates dropdown menu
  var time_list = document.getELementById(elenentId);

  for(var i = 0; i < times.length; i++) {
    var opt = times[i];
    var el = document.createElement("option");
    el.textContent = opt;
    el.value = opt;
    time_list.appendChild(el);
  }

}

myFunction('working_WMS_url', 'time_list');
异步函数myFunction(url,ElementId){ var GetCaps=new ol.format.WMSCapabilities(); var times=等待获取(url)。然后(函数(响应){ 返回response.text(); }).然后(函数(文本){ var result=GetCaps.read(文本); var times=result.Capability.LayerLayer[0]。维度; 返回次数; }); console.log(次); //下面的部分链接并填充下拉菜单 var time_list=document.getELementById(elementId); 对于(var i=0;i
fetch是异步操作的,因此所有依赖于从url读取的文本的处理都应该在fetch的final
then
子句中

另一种方法(并非所有浏览器都支持)是将调用函数声明为异步并使用WAIT语句

async function myFunction(url, elenentId) {

  var GetCaps = new ol.format.WMSCapabilities();
  var times = await fetch(url).then(function(response) {
      return response.text();
    }).then(function(text) {
      var result = GetCaps.read(text);
      var times = result.Capability.LayerLayer[0].Dimension;
      return times;
  });
  console.log(times);

  // Section below links and populates dropdown menu
  var time_list = document.getELementById(elenentId);

  for(var i = 0; i < times.length; i++) {
    var opt = times[i];
    var el = document.createElement("option");
    el.textContent = opt;
    el.value = opt;
    time_list.appendChild(el);
  }

}

myFunction('working_WMS_url', 'time_list');
异步函数myFunction(url,ElementId){ var GetCaps=new ol.format.WMSCapabilities(); var times=等待获取(url)。然后(函数(响应){ 返回response.text(); }).然后(函数(文本){ var result=GetCaps.read(文本); var times=result.Capability.LayerLayer[0]。维度; 返回次数; }); console.log(次); //下面的部分链接并填充下拉菜单 var time_list=document.getELementById(elementId); 对于(var i=0;i感谢您的回复!我已经修改了代码以包含此异步函数,但我没有收到错误,
ReferenceError:retinatorruntime未定义
。某些环境需要polyfill,例如,将调查安装Babel!(我想知道为什么在谷歌搜索中都会出现这个错误)使用
import“registrator runtime/runtime”
修复了它。谢谢谢谢你的回复!我已经修改了代码以包含此异步函数,但我没有收到错误,
ReferenceError:retinatorruntime未定义
。某些环境需要polyfill,例如,将调查安装Babel!(我想知道为什么在谷歌搜索中都会出现这个错误)使用
import“registrator runtime/runtime”
修复了它。谢谢