如何从事件处理程序获取返回数据?

时间:2010-08-19 09:17:01

标签: function return-value javascript

好的,这是一个非常简单的问题。我实际上90%确定我知道答案,但是已经很晚的时间让我完全摆脱它。我在SO和Google上搜索过它没有成功。

如何从事件处理函数中获取返回数据?

我有几个事件处理程序嵌套,需要将最深层的结果输出到主输出。

像这样(伪代码):

mainFunction = function() {

    attachToEvent( 'event1', function( e1 ) {

        e.attachToEvent( 'event2', function( e2 ) {
            return e2.status;
        }

    }
}

console.log( mainFunction() );

将返回数据(e2.status)输出到控制台的正确模式是什么?

再次,我为这个问题的简单性道歉。

由于

3 个答案:

答案 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)吗?