我在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)
?
如何让每行中的代码等到执行代码前一行?