我不明白为什么这段代码对我不起作用
var rest = require('restler');
var getResp = function(url){
var resp ="";
rest.get(url).on('complete',function(response){
resp = response.toString();
});
return resp;
};
我没有收到 getResp('google.com')
的响应
我是否遗漏了 reSTLer 的某些内容?
最佳答案
因为您正在返回 resp
,所以您似乎忘记了请求是异步的。而是试试这个:
var rest = require('restler');
var getResp = function(url){
rest.get(url).on('complete', function(response){
console.log(response);
});
};
getResp('http://google.com/');
// output:
// <!doctype html><html itemscope="itemscope" ....
由于其异步性质,您最好将值传递给接收回调。以这个小例子为例:
var rest = require('restler');
// process an array of URLs
['http://google.com/',
'http://facebook.com/'].forEach(function(item) {
getResp(item);
});
function getResp(url){
rest.get(url).on('complete', function(response){
processResponse(response);
});
};
// data will be a Buffer
function processResponse(data) {
// converting Buffers to strings is expensive, so I prefer
// to do it explicitely when required
var str = data.toString();
}
一旦数据传入,您就可以像传递任何其他变量一样传递它。
关于javascript - 在 Node.js 中使用 reSTLer 获取 HTTP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17564255/