2014-04-29 51 views
0

我想包裝一些jQuery功能(即ajax)由於幾個原因,如參數的全局配置,更重要的是,能夠輕鬆地交換它。如何轉發成功和失敗的jQuery函數回調?

我的問題是,我該如何「轉發」.done().fail()回調? (哪些設計模式是負責的jQuery的這種行爲?)

$.ajax({ 
    url: "http://url.com", 
}) 
    .done(function(data) { 
    // do something 
    }) 
.fail(function() { 
    alert("error"); 
    }); 

爲了澄清,我想什麼,能夠做的是寫它包裝上面的功能和行爲這樣的功能:

myWrapper({config: "abc"}).done(function(data) { 
    // do something 
}); 

回答

1

$.ajax函數不返回promise object它提供了這些方法(donefailalways,最重要的then)。只需從myWrapper函數返回該對象即可。

+0

我是否正確地認爲這些方法再次返回相同的承諾對象?因此,如果我在包裝器中指定'.fail'方法,我可以將其用作默認行爲並返回promise對象? – rob

+1

查看他們的文檔。 '完成'和'失敗'做,'然後'不是例如。 – Bergi

1

您需要返回ajax電話,如果你想這樣做......

function myWrapper(config) { 
    return $.ajax({ 
     url: "http://url.com", 
     data: config 
    }); 
} 

,然後調用像你建議...

myWrapper({ config: "abc" }).done(function(data) { 
    // call is done 
}); 

我明顯地在上面的代碼中做出了假設,但它應該清楚地說明了這一點。如果沒有,只是問:)

+0

夠清楚:)我會馬上測試,thx! – rob