xhr.done(function(data, status, xhr){ ... }) xhr.fail(function(xhr, errorType, error){ ... }) xhr.always(function(){ ... }) xhr.then(function(){ ... })
首先,要使用zepto 的promise方法,除了經常使用的 zepto外,必須在其後加載callbacks模塊和deferred模塊。javascript
而後,就直接上示例代碼吧,一目瞭然,對我來講也省時間,?css
<body> <h3>Request</h3> </body> <script type="text/javascript" src="lib/zepto1.1.6.js"></script> <script type="text/javascript" src="lib/callbacks.min.js"></script> <script type="text/javascript" src="lib/deferred.min.js"></script> <script> var send = function () { var defer = $.Deferred() $.ajax({ url: '', success: function (callback) { if (callback.code === 0) { defer.resolve(callback) } else { defer.reject(callback) } }, error: function (err) { defer.reject(err) } }) return defer.promise() } document.querySelector('h3').onclick = function () { // send().then(function (callback) { // 接受兩個函數,第一個是成功回調,即 defer.resolve(); 第二個是失敗回調,即defer.reject() // console.log(callback.message) // }, function (err) { // console.log(err) // }) // send().done(function (callback) { // 接受一個函數,成功回調,即 defer.resolve(); // console.log(callback) // }) // send().fail(function (callback) { // 接受一個函數,失敗回調,即 defer.reject(); // console.log(callback) // }) send().always(function (callback) { // 接受的函數個數不限,每一個函數不管是成功回調或失敗回調老是執行一個 console.log(callback, 'success') }, function (err) { console.log(err, 'err') }, function (err) { console.log(err, 'err2') }) } </script>
四種回調方法的說明都有註釋,都是我本身測試獲得的結果。
最後附上 zepto中文版網站java