最简单的方法(但也有陷阱-见下文)是
body进入模块范围。
var request = require("request");var body;request("http://www.stackoverflow.com", function(error, response, data) { body = data;});但是,这可能会导致错误。例如,您可能倾向于
console.log(body)在致电之后
request()。
var request = require("request");var body;request("http://www.stackoverflow.com", function(error, response, data) { body = data;});console.log(body); // THIS WILL NOT WORK!由于
request()异步,这将不起作用,因此它将
body在回调中设置之前返回控制。
创建
body事件发送器并订阅事件可能会更好地为您服务。
var request = require("request");var EventEmitter = require("events").EventEmitter;var body = new EventEmitter();request("http://www.stackoverflow.com", function(error, response, data) { body.data = data; body.emit('update');});body.on('update', function () { console.log(body.data); // HOORAY! THIS WORKS!});另一个选择是切换到使用Promise。



