2015-06-08 24 views
0

我有一個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(function(){ 
     console.log('fail'); 
    }). 
    always(function(){ 
     console.log('always'); 
    }); 

}; 

這是由稱爲:

this.data() 
    .then(p.mySecondFunction); 

我希望呼叫的數據,然後在完成分配一些增值經銷商與數據,那麼一旦完成了這一切,我想做mySecondFunction。但在上面的代碼中,第二個函數發生在ajax調用之前。

另外,我希望mySecondFunction被調用,無論ajax調用是否失敗。

+0

在您的代碼中看不到錯誤。當你說它發生之前,怎麼知道它? –

+0

你試過'$ .ajax()。然後'? –

+1

'p.data()。always(fn)'? – Hless

回答

0

您可以使用.always()。它已經在你的代碼中。

當Deferred對象被解析或拒絕時,添加要調用的處理程序。

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 
    }); 

}; 
+0

謝謝,我可以返回ajax調用,沒有.always()並在方法上聲明.always。 this.data()。總是()。即使在數據方法中.done是在ajax調用本身上聲明的。 – panthro

+0

我想你想要做這樣的事情? http://www.dotnetcurry.com/jquery/1022/jquery-ajax-deferred-promises –