2013-07-17 3 views
0

Я хотел бы передать результат моей функции ajax другому (вроде как «пузыриться по событию»). Я действительно нужно держать АЯКС функцию обертку, как есть, то есть общий, поэтому я ищу решение, которое не задевает myAjaxHandler()

$('button').on(
    'click', 
    myAjaxHandler() 
); 


function myAjaxHandler(){ 
    return $.ajax({ 
     ... 
    }); 
} 

myAjaxHandler().done(
    function(result){ 
     console.log(result); // shows 'hello' 
    } 
).then(
    console.log('hi') // shows before 'hello' 
); 

я сначала получить «привет», то «привет», но я хочу это по-другому: сначала «привет», затем «привет». Я уверен, что я не использую .then() в правильном пути, и если честно, я начинаю думать, что я никогда не буду действительно понять $.Deferreds - и я полагаю, $.ajax является Deferred объектом со всеми его преимуществами и идиосинкразией ...

+5

Ваш обратный вызов 'then' не является функцией. – Blender

+0

+1 для решения - слишком плохо, я не могу его принять. – tim

ответ

0

Будет ли это работать для вас. Это не путается с myAjaxHandler()

$('button').on('click', function(){ 

    myAjaxHandler().done(function(results){ 
     console.log(results); //Say Hello 
     sayHiFunction();  //Say Hi 
    }); 

}); 


function myAjaxHandler(){ 
    return $.ajax({ 
     ... 
    }); 
} 

function sayHiFunction(){ 
    console.log('hi'); 
} 
+0

sayHiFunction() завершит работу над ajaxHandler(). – tim

+0

@tim? Я не называю 'sayHiFunction();' до тех пор, пока не будет выполнено 'ajaxHandler()'. Я не уверен, что случилось. Я просто проверил его сам, и все получилось отлично. – James

Смежные вопросы