首页 > 代码库 > nodejs使用request和bluebird编写的http请求模块

nodejs使用request和bluebird编写的http请求模块

var request = require("request");var promise = require("bluebird");//使用bluebird将request库的所有异步方法编译成promise形式,会自动加上Async后缀request = promise.promisifyAll(request);var curl = (function () {     function curl() { } /** * 输入一个url和需要post的数据(如果需要post),然后返回最终访问到的结果. * * @author jie * @date 2015/2/5  * @param string url 需要访问的url. * @param string postData 访问时,需要post过去的数据. * @return promise * */ curl.visitAsync = function (url, postData) {     if (postData =http://www.mamicode.com/== void 0) { postData = http://www.mamicode.com/""; }     try { //request.debug = true;//详细打印请求报告         var res;         url = url.trim();         //为没有http开头的url添加http头,必须添加         if (!url.match(/^http./)) {            { url = "http://" + url; }         }        //默认超时时间timeout为20秒,无须设置         var options = { url: url, form: "" };         if (postData) {             //使用request库中的form来保存post数据,这样访问的content-type会变成application/x-www-form-urlencoded            options.form = postData; //post数据             res = request.postAsync(options);         //返回代执行的promise函数         } else{             res = request.getAsync(options);        }        //返回代执行的promise函数         return res.spread(function (res, body) { return body; });     } catch (ex) {     throw ex;     }}; //visitAsync return curl;})();module.exports = curl;使用:test.jsimport curl = require(".curl");var tsk = curl.visitAsync("http://www.baidu.com");tsk.then(body => { console.log(body);})看到bluebird库的api有catch()可以捕抓抛出的错误,不知道直接使用try-catch有没有作用呢~~~~~~~~
 https://www.npmjs.com/package/bluebird

nodejs使用request和bluebird编写的http请求模块