在JavaScript中使用请求检索数据

时间:2016-08-14 10:59:51

标签: javascript json promise yahoo-api yahoo-finance

我在javascript中使用request库。

如果我使用

function executeYQL(q) {
  const uri = 'http://query.yahooapis.com/v1/public/yql'
  const qs = {
    q: encodeURIComponent(q),
    format: 'json',
    env: 'http://datatables.org/alltables.env'
  };
  request(uri, qs, (err, res, body) => {
    if (!err && res.statusCode === 200) {
      return JSON.parse(body);
    } else {
      console.log(res.statusCode);
      console.log(err);
    }
  });
};

exports.getStocks = (req, res) => {
  const q = 'select * from yahoo.finance.historicaldata where symbol = "YHOO" AND startDate = "2009-09-11" and endDate = "2010-03-10"';
  const json = executeYQL(q);
  res.json(json);
};

导致状态码400,但如果我使用

const uri = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent(q) + '&format=json&env=http://datatables.org/alltables.env'

它正确检索数据;但是,json内的变量getStocks()undefined

我不知道为什么没有填充。我必须使用Promise吗?我想这是因为同步调用,所以它在res.json(json)完成之前运行const json = executeYQL(q)

如何让每行中的代码等到执行代码前一行?

0 个答案:

没有答案