在我进行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
答案 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
}