我正在使用Node.js构建一个小框架,我会尝试使用来自API的数据,但我不知道为什么它不起作用(异步但是??)。
var request = require('request');
var IndexController = function(request, parameters) {
this.request = request;
this.parameters = parameters;
}
IndexController.prototype.execute = function () {
var url = "https://prod.api.pvp.net/api/lol/euw/v1.1/champion?api_key=#my-private-key";
var data;
request(url, function(error, response, body) {
if (!error && response.statusCode == 200) {
data = JSON.parse(body);
}
});
return data;
}
module.exports = IndexController;
一些建议可能非常棒!顺便说一句,我也试过xmlhttprequest。
感谢您的帮助!
答案 0 :(得分:1)
基本上,如果你在那里返回数据,它将是空的。那是因为Node.js的异步函数处理。 (函数调用'request(url,...)'在“相同”时间内执行,返回变量'data')。
查看上面提到的请求函数:它接收一个回调函数,包含函数完成后将要执行的所有逻辑。
首先需要的是以下内容;添加一个回调函数参数:
IndexController.prototype.execute = function (callbackFunc) {
// do request as you intended
request(url, function(error, response, body) {
if (!error && response.statusCode == 200) {
data = JSON.parse(body);
callbackFunc(data); // then call callback-function with results
}
});
在逻辑的调用部分中,实例化IndexController并调用'IndexController.execute()',然后使用callback-function作为参数调用它(即应该对结果做什么):< / p>
var controller = IndexController(req, params);
controller.execute(function (data) {
console.log(data);
});
希望这是一个开始。