Javascript 使用.then和ajax调用

Javascript 使用.then和ajax调用,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个ajax调用: p.data = function(){ return $.ajax({ url: '/data', type: 'POST' }).done(function(data){ console.log('done'); //do something with data here p.dummyDataVar = data[0]; }) .fail(functio

我有一个ajax调用:

p.data = function(){

    return $.ajax({
        url: '/data',
        type: 'POST'
    }).done(function(data){
        console.log('done');
        //do something with data here
        p.dummyDataVar = data[0];
    })
    .fail(function(){
        console.log('fail');
    }).
    always(function(){
        console.log('always');
    });

};
这被称为:

this.data()
    .then(p.mySecondFunction);
我希望调用数据,然后在完成时使用该数据分配一些变量,然后在完成所有操作后,我希望执行mySecondFunction。但是在上面的代码中,第二个函数发生在ajax调用之前

此外,我希望无论ajax调用是否失败,都能调用mySecondFunction。

您可以使用它。它已经在你的代码中了

添加在解析或拒绝延迟对象时要调用的处理程序


在代码中看不到错误。当您说以前发生过这种情况时,您怎么知道呢?您是否尝试过
$.ajax()。然后
p.data().always(fn)
?谢谢,我可以返回ajax调用,而不使用.always()并声明.always on方法吗。this.data().always()。即使在data方法中,done也是在ajax调用本身上声明的。我想您是在尝试这样做吗?
p.data = function () {

    return $.ajax({
        url: '/data',
        type: 'POST'
    }).done(function (data) {
        console.log('done');
        //do something with data here
        p.dummyDataVar = data[0];
    })
    .fail(function () {
        console.log('fail');
    }).always(function () {
        //Call whatever you want
    });

};