- 内容简介
- 译者序
- 前言
- 第 1 章 安装配置新项目
- 第 2 章 Flexbox 布局介绍
- 第 3 章 用 React Native 开发一个应用
- 第 4 章 在 React Native 中使用导航
- 第 5 章 动画和滑动菜单
- 第 6 章 用 React Native 绘制 Canvas
- 第 7 章 使用 React Native 播放音频
- 第 8 章 你的第一个自定义视图
- 第 9 章 Flux 介绍
- 第 10 章 处理复杂的应用程序状态
- 第 11 章 使用 Node 来实现服务端 API
- 第 12 章 在 React Native 中使用文件上传
- 第 13 章 理解 JavaScript Promise
- 第 14 章 fetch 简介
- 第 15 章 在 iOS 中使用 SQLite
- 第 16 章 集成 Google Admob
- 第 17 章 React Native 组件国际化
- 附录 A React.js 快速介绍
- 附录 B Objective-C Primer
- 附录 C webpack 入门
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
Promsie 方法链
Promsie 的特性之一是可以链式调用方法,fetch 也可以使用该特性,同时,使用链式调用,可以让你的请求处理逻辑更加通用。
如果使用的 API 返回 JSON 格式数据,那么针对每次响应,你都需要检查相应状态并做 JSON 格式转换。其实还能简化代码,你可以将状态检测和 JSON 转换的代码放到单独的函数中去,从而可以更专注于处理最终数据和错误情况。
function status(response) { if (response.status >= 200 && response.status < 300) { return Promise.resolve(response) } else { return Promise.reject(new Error(response.statusText)) }
} function json(response) { return response.json() } fetch('users.json') .then(status) .then(json) .then(function(data) { console.log('Request succeeded with JSON response', data); }).catch(function(error) { console.log('Request failed', error); });
在上面的代码中,我们定义了一个 status 方法来检查 response.status 的状态,根据结果不同返回 Promise.resolve() 或 Promise.reject(),这是 fetch() 方法链中的第一个方法调用。如果返回 resolve 状态,我们会继续调用 json(),从而返回 response.json() 的执行结果。经过这些处理,我们已经可以获得解析后的 JSON 对象。如果解析失败,Promise 返回 reject 状态,执行 catch 里的代码进行错误处理。
这么编码更大的好处在于,你可以在所有的 fetch 请求中使用上面的逻辑代码,从而让代码变得更加容易阅读、维护和测试。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论