ajax和promise的結合使用方法分享

來源:互聯網
上載者:User
本文主要和大家分享ajax和promise的結合使用方法,在需要依賴完成的ajax請求可使用promise保證執行順序 在第一個請求正確返回後再發送第二個請求。希望能協助到大家。

/*  定義一個使用promise的ajax請求,這裡依賴jquery  參數中請求url為必填參數*/const ajaxPromise=  param => {  return new Promise((resovle, reject) => {    $.ajax({      "type":param.type || "get",      "async":param.async || true,      "url":param.url,      "data":param.data || "",      "success": res => {        resovle(res);      },      "error": err => {        reject(err);      }    })  })}/*   第一個請求*/let step1 = () => {    ajaxPromise({      "url":"",    }).then(res => {        console.log("第一個請求正確返回==>"+res);          step2(res);      }).catch(err => {        console.log("第一個請求失敗");      })}/*   第二個請求*/let step2 = (res) => {    ajaxPromise({      "type":"get",      "url":"",      "data":{"name":res}    }).then(res => {        console.log("第二個請求正確返回==>"+res);      }).catch(err => {        console.log("第二個請求失敗==>"+err);      })}step1();

原生js寫ajaxpromise對象

const ajaxPromise =  param => {  return new Promise((resovle, reject) => {    var xhr = new XMLHttpRequest();    xhr.open(param.type || "get", param.url, true);    xhr.send(param.data || null);    xhr.onreadystatechange = () => {     var DONE = 4; // readyState 4 代表已向伺服器發送請求     var OK = 200; // status 200 代表格服務器返回成功     if(xhr.readyState === DONE){      if(xhr.status === OK){        resovle(JSON.parse(xhr.responseText));      } else{        reject(JSON.parse(xhr.responseText));      }     }    }  })}

關於promise使用時的幾點:

  1. 使用方法:先建立一個promise對象new Promise(),根據業務需求判斷執行成功或失敗,成功調用resovle(),失敗則調用reject()。

  2. Promise對象的then(onFulfilled,onRejected)有兩個參數,成功執行onFulfilled,失敗執行onRejectd

    p.then(function(value) {   // fulfillment成功  }, function(reason) {  // rejection失敗});//不過通常會使用catch()來捕獲失敗,上段代碼通常寫為:p.then(function(value) {    // fulfillment成功}).catch(function(reason) {    //rejection失敗})
  3. Promise對象的then()會返回一個新的Promise對象

相關推薦:

小程式Promise簡化回調執行個體分享

jQuery的Promise如何正確使用

關於promise對象的簡單用法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.