CNode

请问 NodeJS 如何导出回调函数 callback 中的值?

问答
Jjsanswer1发布于11 年前最后回复11 年前12 回复10375 浏览0 收藏

网上查询了很多,都没有找到方法,于是来这求助 因为 NodeJS 异步执行的原因,所以导出

var data;
var ep = new eventproxy();
request('http://www.example.com', function(err, res, body){
	data = body;
	ep.emit('event1',data);
});
ep.all('event1', function (data) {
	console.log(data);  // -> 这里能打印出值
}
module.exports = data;    // ->因为异步执行,这里没有值

请问我如何导出 data ?

查看回复

回复 (12)

C
chloe#1·11 年前

var _ = require("underscore"); ep.all('event1', function (data) { _.extend(module.exports, data); }

J
jsanswer1#2·11 年前
引用 airyland

@airyland 明白了,现在感觉node异步执行用不好简直就是个坑,刚接触Node,瞬间无爱了

D
destec#6·11 年前

笨方法: 定义个全局变量,在回调里面赋值。 坐等楼下大神解答。

J
jsanswer1#7·11 年前
引用 destec笨方法: 定义个全局变量,在回调里面赋值。 坐等楼下大神解答。

@destec 哈哈,看来你是还没有懂异步的原理,定义全局变量是不行的

D
destec#8·11 年前
引用 jsanswer1@destec 哈哈,看来你是还没有懂异步的原理,定义全局变量是不行的

@jsanswer1 代码没看清,原来已经有全局变量了。那试试直接module.export function呢?

L
leapon#9·11 年前

在 console.log(data); 这行调用你的函数不就可以了嘛

J
jsanswer1#10·11 年前
引用 leapon在 console.log(data); 这行调用你的函数不就可以了嘛

@leapon 我是想导出data这个值供其它模块使用

A
airyland#11·11 年前
module.exports = function(callback){
  var ep = new eventproxy();
  request('http://www.example.com', function(err, res, body){
	  ep.emit('event1',data);
  });
  ep.all('event1', function (data) {
	  console.log(data);  // -> 这里能打印出值
	  callback(data);
  }
}
B
blackjack#12·11 年前

试了下这样 var EventProxy = require('eventproxy'); var ep = new EventProxy(); module.exports = function(callback){ var data = 1000; var tt = { data:data, cb:callback } ep.emit('event1', tt); } ep.all("event1", function(tt){ console.log(tt.data); // -> 这里能打印出值 tt.cb(tt.data + 1); });

参与回复
登录后即可参与回复。登录