Node:Q与node http模块搭配
2016-02-25 18:38
696 查看
最近在做爬虫的时候,在使用http模块发送请求时,希望拿到请求响应的数据后,再对数据进行解析。当然可以用回调函数解决,阅读性差了点,写起来也比较臃肿。
可以尝试用q。
这里就避免了过多的回调,并且同样能合理的管理异步事件。
可以尝试用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); });
这里就避免了过多的回调,并且同样能合理的管理异步事件。
相关文章推荐
- RPC failed; result=22, HTTP code = 411
- Python3写爬虫(四)多线程实现数据爬取
- Scrapy的架构介绍
- 爬虫笔记
- HTTP Header 属性列表
- nginx中http核心模块的配置指令2
- nginx中http核心模块的配置指令3
- nginx中http核心模块的配置指令4
- nginx中http的fastcgi模块的配置指令1
- 如何在 Linux 中快速地通过 HTTP 提供文件访问服务
- 深入HTTP head的使用详解
- ASP 中使用 HTTP 协议发送参数详解
- C#基于socket模拟http请求的方法
- http www安全必备知识
- 快速掌握Node.js环境的安装与运行方法
- Windows系统下Node.js的简单入门教程