从调用函数中检索回调值。如何?

时间:2012-05-26 14:33:09

标签: javascript

在我进行ajax调用的函数中,回调函数具有我在该函数中需要的response_text。我尝试了在调用函数中放置var here并在回调函数中使用它。这不起作用。接下来我尝试使用function out(),这是我以前做过的。这可行,因为我现在可以从out()访问response_text。但是,有没有办法直接从vOrb()访问,即原始调用函数?

我不想像在SO Question

中那样将所有代码放在回调中

当回调函数进行异步返回时,模块模式是否可以作为保持var here范围的方法?或者只是简单地将var vOrb = function(){}写成包裹并使用new进行调用,这样做吗?

function vOrb( icon_array )
{
    var here; // does not work
    function out( here ){} // does work
    new AjaxRequest().invoke( 'ajax_type=fav_dir', function( response_text )
    {
        out( response_text );
    } ); 

// want response_text here

1 个答案:

答案 0 :(得分:1)

我不确定我是否理解了一切,但无论如何我都会尽力回答。 如果这是您想要的,则不能在回调之外使用response_text - 它将是未定义的。

最好这样做:

function vOrb( icon_array )
{
    new AjaxRequest().invoke( 'ajax_type=fav_dir', myCallback ); 
    var myCallback = function ( response_text ) {
        // blah…
    };
}

如果您绝对想在回调之外使用response_text,那么您必须先检查它是否先设置。

var my_response;
function vOrb( icon_array )
{
    new AjaxRequest().invoke( 'ajax_type=fav_dir', myCallback ); 
    var myCallback = function ( response_text ) {
        my_response = response_text;
    };
}

// ...

if ( typeof my_response !== 'undefined' ) { // will only work after the callback is triggered
    // use "my_response" here
}