Похоже, что все обещания не обещают - PullRequest
0 голосов
/ 28 июня 2018

Эй, я понимаю, что на это можно ответить где-то еще, но я не могу найти тот, который соответствует моим потребностям. Этот код:

async function makeCharts(coin){
  let results = await Promise.all([getDailyData(coin), getCurrentData(coin)])
  makeCurrentLineChart(coin, results[1])
  makeHighLowLineChart(coin, results[0])
}

, похоже, не ожидает разрешения массива результатов. Два метода диаграммы иногда не передают данные, иногда они работают отлично.

Это асинхронные функции:

async function getDailyData(coin){
  let response = {}
  try{
    response = await axios.get('https://www.alphavantage.co/query?function=DIGITAL_CURRENCY_DAILY&symbol='+ coin +'&market=USD&apikey=' + APIKEY)
  }catch(err){
    response = err
  }
  let obj = { labels: [], highdata: [], lowdata: [] }
  const data = response.data['Time Series (Digital Currency Daily)']
  let i = 0
  for(let key in data){
    if(i == 21) break; 
    i = i+1
    obj.labels.push(key)
    if (data.hasOwnProperty(key)){
      obj.highdata.push(parseFloat(data[key]['2a. high (USD)']))
      obj.lowdata.push(parseFloat(data[key]['3a. low (USD)']))
    }
  }
  return obj
}

async function getCurrentData(coin){
  let response = {}
  try{
    response = await axios.get('https://www.alphavantage.co/query?function=DIGITAL_CURRENCY_INTRADAY&symbol='+ coin +'&market=USD&apikey=' + APIKEY)
  }catch(err){
    response = err
  }
  let obj = { labels: [], currentdata: [] }
  const data = response.data['Time Series (Digital Currency Intraday)']
  let i = 0
  for(let key in data){
    if(i == 100) break; 
    i = i+1
    obj.labels.push(key.split(' ')[1])
    if (data.hasOwnProperty(key)){
      obj.currentdata.push(parseFloat(data[key]['1a. price (USD)']))
    }
  }
  return obj
}

Я посмотрел обещанное видео Даниэля Шиффмана, и это, кажется, соответствует логике:

https://www.youtube.com/watch?v=01RTj1MWec0&t=57s

Я также посмотрел здесь, и функция makeCharts там соответствует синтаксису, чуть выше раздела Summary:

https://javascript.info/async-await

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...