2016-08-09 248 views
0

我有以下脚本:同步GET请求

var request = require("request"); 
var slogans = request.get("https://raw.githubusercontent.com/queatech/slogans/master/slogans.txt", function(err, res, body){ 
    if (!err && res.statusCode == 200) { 
     return body.split("\n").splice(-1); 
    } 
}); 
console.log(slogans); 

我希望脚本的输出为

[ '终极Q &网站',“自由Q &一Site','The Idea Q & A Site']

但是,我得到了长的JSON GET查询。有没有办法将变量slogans设置为https://raw.githubusercontent.com/queatech/slogans/master/slogans.txt的GET请求?
这可能吗?

回答

0

根据该请求库的源代码[1],request.get将返回一个Request对象。你实际需要的是回应。

您已将功能传递给您的request.get调用,它被称为回调函数,此函数接收参数err,resbodyres代表响应,检查它找到你要找的东西。最后,body包含您请求的数据。

您只能在回调函数的范围和回调函数体内部访问这些变量(errresbody)在的时候,你的请求的响应到达时才会执行。

你写任何代码后request.get将“并行”执行,这意味着它不会等待你的回应到达。

[1] https://github.com/request/request/blob/master/index.js

+0

恐怕这并没有解决我的问题。我想知道,我怎样才能将'slogans'变量设置为[this](https://raw.githubusercontent.com/queatech/slogans/master/slogans.txt)页面的字符“\ n “在GET请求中? – baranskistad

+0

如果你真的想保持你的代码行在这个形状,你可以看看异步等待。 – FaureHu