日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Promise实战AJAX封装

發布時間:2023/12/2 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Promise实战AJAX封装 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、利用Promise的知識,對最開始的ajax的例子進行一個簡單的封裝:

var url = 'xxx'; // 封裝一個get請求的方法 function request(url){return new Promise(function(resolve,reject){var XHR = new XMLHttpRequest();XHR.open('GET',url,true);XHR.send();XHR.onreadystatechange = function(){if(XHR.readyState==4 && XHR.status == 200){try{var response = JSON.parse(XHR.responseText);resolve(response)} catch(e){reject(e);}}else{reject(new Error(XHR.statusText))}}})}request(url).then(function(res){console.log(res); })

?二、當有一個ajax請求,它的參數需要另外2個甚至更多請求都有返回結果之后才能確定,這個時候,就需要用到Promise.all

Promise.all接收一個Promise對象組成的數組作為參數,當這個數組所有的Promise對象狀態都變成resolved或者rejected的時候,它才會去調用then方法。

url1 = "xxx1" url2 = "xxx2"function renderAll(){return Promise.all([request(url1),request(url2)]) }renderAll().then(function(value){console.log(value); })

?三、Promise.race

Promise.race是以一個Promise對象組成的數組作為參數,不同的是,只要當數組中的其中一個Promsie狀態變成resolved或者rejected時,就可以調用.then方法了

function renderRace() {return Promise.race([getJSON(url), getJSON(url1)]); }renderRace().then(function(value) {console.log(value); })

?歡迎加入大前端交流群!群號:277942610,新建立VIP新群


更多專業前端知識,請上 【猿2048】www.mk2048.com

總結

以上是生活随笔為你收集整理的Promise实战AJAX封装的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。