Node:Q与node http模块搭配

来源:互联网 发布:电脑能写小说的软件 编辑:程序博客网 时间:2024/06/08 13:24

最近在做爬虫的时候,在使用http模块发送请求时,希望拿到请求响应的数据后,再对数据进行解析。当然可以用回调函数解决,阅读性差了点,写起来也比较臃肿。

可以尝试用q。

//导入相关模块var http = require('http'),    Q = require('q');//请求参数var options = {  hostname: 'yourHost.com',  path: '/test',  method: 'GET'}; function promisedRequest( options ) {    //实例化一个延迟对象    var deferred  = Q.defer();    var req = http.request( options, function(response) {      response.setEncoding('utf8');      var responseData = '';      response.on('data', function(data) {        responseData += data;      });      response.on('end', function() {        //这里表示成功执行时,调用resolve方法        deferred.resolve(responseData);      });    });    //listen to the 'error' event    req.on('error', function(err) {      //失败时,调用reject方法      deferred.reject(err);    });    req.end();    //返回promise对象    return deferred.promise;};promisedRequest( options ).then(function(response) { //执行resolve方法时,参数是上个函数执行得到的结果    console.log(JSON.stringify(response));}, function(error) { //失败执行reject方法    console.log(error);});

这里就避免了过多的回调,并且同样能合理的管理异步事件。

0 0
原创粉丝点击