0

在我进行 ajax 调用的函数中,回调具有我在该函数中需要的 response_text。我尝试了将 avar 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
4

1 回答 1

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
}
于 2012-05-26T14:59:13.667 回答