如何在Array.map中调用异步函数(XMLHttpRequest)并等待该函数完成?

时间:2019-11-17 04:01:45

标签: javascript ajax asynchronous promise

我正在尝试做这样的事情:

Promise.all(stocks.map(e=>{
  var url = `https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=${e}&apikey=${process.env.API_KEY}`;
  var dataReq = new XMLHttpRequest();
  dataReq.open('GET', url, true);
  dataReq.send()
  return dataReq.onload=()=>Promise(function(){
    var rawData = JSON.parse(dataReq.responseText);
    var data = rawData['Time Series (Daily)'];
    var keys = Object.keys(data).sort((a,b)=>a-b);
    return data[keys[0]];
  }).then(data=>data)
}))
.then(data => {
  console.log(data);
})

我尝试将dataReq.send()dataReq.onload()函数包装在new Promise()中,我尝试将new Promise()包装在函数中,并且尝试同时返回.onload(...).then(...).send().then(...)(移动我要返回的最后一行)。我已经获得了控制台输出以产生[[Function], [Function]],但是无法获取它来显示实际数据。我要等到两个数据集都被检索完的原因是,因为我想对数据库进行搜索以找到适合任何一个数据集的条件的条目,所以我想先获取这两个数据集,然后{ }}搜索数据库。

0 个答案:

没有答案