Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ajax中的Javascript回调函数_Javascript - Fatal编程技术网

ajax中的Javascript回调函数

ajax中的Javascript回调函数,javascript,Javascript,我该怎么做 function DoStuffAndCallBack(callback){ $.get( "ajax/test.html", function( data ) { callback(); }); } DoStuffAndCallBack(DoneFunction); function DoneFunction(){ console.log('done stuff'); } 我得到的“回调”是未定义的。是否有办法做到这一点,我知道有承诺,但

我该怎么做

function DoStuffAndCallBack(callback){
      $.get( "ajax/test.html", function( data ) {
      callback();

    });
}

DoStuffAndCallBack(DoneFunction);

function DoneFunction(){
  console.log('done stuff');
}
我得到的“回调”是未定义的。是否有办法做到这一点,我知道有承诺,但在这种情况下我如何做到这一点。

看起来“回调”正在失去内部函数(即ajax调用)中的上下文

试试这个-

function DoStuffAndCallBack(callback){
    this.callback = callback;
    var self = this;
    $.get( "ajax/test.html", function( data ) {
      self.callback();
    });
}

DoStuffAndCallBack(DoneFunction);

function DoneFunction(){
  console.log('done stuff');
}

我不明白为什么这样做不起作用。引用的代码很好,问题出在引用的代码之外。一个可能的原因(从我团队中的错误数量猜测):可能您将回调函数定义为
DoneFunction=function()
,而不是
function DoneFunction()
?您能否给出console@ionescu VICTOR中打印的完整错误,它为什么会失去上下文?请参阅此处,这里有很好的解释。在回拨的情况下,我们需要显式设置“this”