好的,这是一个非常简单的问题。我实际上90%确定我知道答案,但是已经很晚的时间让我完全摆脱它。我在SO和Google上搜索过它没有成功。
如何从事件处理函数中获取返回数据?
我有几个事件处理程序嵌套,需要将最深层的结果输出到主输出。
像这样(伪代码):
mainFunction = function() {
attachToEvent( 'event1', function( e1 ) {
e.attachToEvent( 'event2', function( e2 ) {
return e2.status;
}
}
}
console.log( mainFunction() );
将返回数据(e2.status
)输出到控制台的正确模式是什么?
再次,我为这个问题的简单性道歉。
由于
答案 0 :(得分:3)
您可以只登录事件处理程序或将回调传递给main函数。
mainFunction = function(callback) {
arg.attachToEvent( 'event1', function( e1 ) {
e.attachToEvent( 'event2', function( e2 ) {
callback(e2.status);
}
}
}
mainFunction( function (e) { console.log(e); } );
答案 1 :(得分:1)
这是不可能的,因为在事件被触发之前可能已经执行了console.log。
请参阅此示例(我使用的是计时器而不是事件)
var x = 1;
setTimeout( function(){
x = 2;
},1000)
console.log(x);// x = 1
通过更改x
的范围,您可以使用console.log。
如你所见,在大多数情况下,这将无济于事
问题:
mainFunction = function() {
var returnValue;
attachToEvent( 'event1', function( e1 ) {
e.attachToEvent( 'event2', function( e2 ) {
returnValue = e2.status;
}
}
return returnValue;
}
console.log( mainFunction() );
答案 2 :(得分:0)
而不是return e2.status
你不能只写console.log(e2.status)
吗?