zepto $.ajax()返回的XHR對象 promise接口總結

zepto 的promise回調接口一共四個方法,分別是:

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

相關文章
相關標籤/搜索