博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
react-native fetch 请求封装
阅读量:7260 次
发布时间:2019-06-29

本文共 1881 字,大约阅读时间需要 6 分钟。

1.fetch 函数封装

fetch.js

/** * 请求头 * @type {
{Accept: string, Content-Type: string}} */const header = { 'Accept': 'application/json', 'Content-Type': 'application/json',}; /** * 注意这个方法前面有async关键字 * @param url 请求地址 * @param body 请求参数 * @param method 请求方法 大写 * @param successCallBack 网络请求成功的回调 * @param errorCallBack 出错的回调 * @returns {Promise.<*>} */export function requestUrl(url, method, body, successCallBack: func, errorCallBack: func) { if ('GET' === method) { get(url, body, successCallBack, errorCallBack); } else { post(url, body, successCallBack, errorCallBack); }} /** * get请求 */async function get(url, body, successCallBack, errorCallBack) { let str = toQueryString(body); if (str && str.length > 0) url += '?' + str; console.log(url); try { // 注意这里的await语句,其所在的函数必须有async关键字声明 let response = await fetch(url); console.log('reqyestUrl:' + url); let responseJson = await response.json(); return successCallBack(responseJson); } catch (error) { return errorCallBack(error); //console.error(error); }} /** * post请求 */async function post(url, body, successCallBack, errorCallBack) { try { // 注意这里的await语句,其所在的函数必须有async关键字声明 let response = await fetch(url, { method: 'POST', headers: header, body: JSON.stringify(body) }); console.log('reqyestUrl:' + url); let responseJson = await response.json(); return successCallBack(responseJson); } catch (error) { return errorCallBack(error); }} /** * 用于对对象编码以便进行传输 * @param obj 对象参数 * @returns {string} 返回字符串 */function toQueryString(obj) { let str = ''; if (obj) { let keys = []; for (let key in obj) { keys.push(key); } keys.forEach((key, index) => { str += key + '=' + obj[key]; if (index !== keys.length - 1) { str += '&'; } }); } return str;}

.

转载于:https://www.cnblogs.com/crazycode2/p/9389181.html

你可能感兴趣的文章
CSS 属性篇(五):box-sizing属性
查看>>
作用域之let、var
查看>>
跟我一起学docker(八)--Dockerfile
查看>>
[译]理解react之setState
查看>>
Android 8.0 的部分坑及对应解决方法
查看>>
webpack集成开发环境wci-build
查看>>
从零讲解 iOS 中 OpenGL ES 的纹理渲染
查看>>
火狐浏览器61发布:UI、性能、TLS1.3以及更多你想了解的都在这儿
查看>>
iBrand 教程:VirtualBox 软件安装过程截图
查看>>
一文弄懂Java和C中动态链接机制
查看>>
Bitcoin ABC和区块上限——通过技术实现更大的区块
查看>>
失去往日辉煌的快递元老宅急送,能否借即时配翻身?
查看>>
IQKeyboardManager 使用与禁用(转)
查看>>
总结的小知识点(一)
查看>>
COW机制已经相关类
查看>>
聊一聊前端的监控
查看>>
成为一名Java高级架构师到底需要学习什么?
查看>>
mysql常用命令汇总
查看>>
Netty+SpringBoot+FastDFS+Html5实现聊天App(五)
查看>>
恕我直言,你可能误解了微服务
查看>>