React-Native Fetch使用Promise封裝(一)


項目中封裝Fetch的方法

 1 /** 
 2  *2017/04/23 dongtao
 3  * 基於 fetch 封裝的 GET請求 
 4  * @param url 
 5  * @param params {} 
 6  * @param headers 
 7  * @returns {Promise} 
 8  */  
 9 var HTTPUtil = {};  
10  
11 HTTPUtil.get = function(url, params, headers) {  
12     if (params) {  
13         let paramsArray = [];  
14         //encodeURIComponent  
15         Object.keys(params).forEach(key => paramsArray.push(key + '=' + params[key]))  
16         if (url.search(/\?/) === -1) {  
17             url += '?' + paramsArray.join('&')  
18         } else {  
19             url += '&' + paramsArray.join('&')  
20         }  
21     }  
22     return new Promise(function (resolve, reject) {  
23       fetch(url, {  
24             method: 'GET',  
25             headers: headers,  
26           })  
27           .then((response) => {  
28               if (response.ok) {  
29                   return response.json();  
30               } else {  
31                   reject({status:response.status})  
32               }  
33           })  
34           .then((response) => {  
35               resolve(response);  
36           })  
37           .catch((err)=> {  
38             reject({status:-1});  
39           })  
40     })  
41 }  
42  
43  
44 /** 
45  * 基於 fetch 封裝的 POST請求  FormData 表單數據 
46  * @param url 
47  * @param formData   
48  * @param headers 
49  * @returns {Promise} 
50  */  
51 HTTPUtil.post = function(url, formData, headers) {  
52     return new Promise(function (resolve, reject) {  
53       fetch(url, {  
54             method: 'POST',  
55             headers: headers,  
56             body:formData,  
57           })  
58           .then((response) => {  
59               if (response.ok) {  
60                   return response.json();  
61               } else {  
62                   reject({status:response.status})  
63               }  
64           })  
65           .then((response) => {  
66               resolve(response);  
67           })  
68           .catch((err)=> {  
69             reject({status:-1});  
70           })  
71     })  
72 }  

使用

 1 let formData = new FormData();  
 2 formData.append("id",1060);  
 3  
 4 HTTPUtil.post(url,formData,headers).then((json) => {  
 5     //處理 請求success  
 6     if(json.code === 0 ){  
 7             //我們假設業務定義code為0時,數據正常  
 8         }else{  
 9              //處理自定義異常  
10             this.doException(json);  
11         }  
12    },(json)=>{  
13      //TODO 處理請求fail  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM