1、request.js源码
var http = require('http');
var config = require('../config');
var qs = require('querystring');
// post请求
exports.post = function(req, url, data, callback) {
var content = qs.stringify(data);
var options = {
hostname: config.server_host,
port: config.server_port,
path: url,
method: 'POST',
headers: req.headers
};
var req = http.request(options, function (res) {
res.setEncoding('utf8');
var data = '';
res.on('data', function (d) {
data += d;
}).on('end' , function(){
data = JSON.parse(data);
return callback(null, data);
});
}).on('error', function (e) {
console.log('problem with request: ' + e.message);
});
req.write(content);
req.end();
};
// get请求
exports.get = function(req, url, data, callback) {
var content = qs.stringify(data);
var options = {
hostname: config.server_host,
port: config.server_port,
path: url + '?' + content,
method: 'GET',
headers: req.headers
};
var req = http.request(options, function (res) {
res.setEncoding('utf8');
var data = '';
res.on('data', function (d) {
data += d;
}).on('end', function() {
data = JSON.parse(data);
return callback(null, data);
});
}).on('error', function (e) {
console.log('problem with request: ' + e.message);
});
req.end();
};
2、调用方式
var User = require('../models/user');
var Request = require('../models/request');
var EventProxy = require('eventproxy');
var Log = require('log4js').getLogger("index");
exports.update = function(req, res, next) {
//解决异步调用的问题
var proxy = new EventProxy();
proxy.fail(next);
Request.get(req, 'url', {code: 12}, proxy.done('get', function(data) {
//proxy.emit("get", data);
return data;
}));
Request.get(req, 'url', {code: 12}, function(err, data) {
proxy.emit("result", data);
});
Request.get(req, 'url', {code: 12}, proxy.done('three'));
proxy.all("get", 'result', 'three', function (gets, result, three) {
console.log(gets);
console.log(result);
console.log(three);
});
}