- 内容简介
- 译者序
- 前言
- 第 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 入门
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
错误处理实战
回到上面处理小说章节的代码,我们可以使用 catch 来捕获错误信息并展示给用户:
getJSON('story.json').then(function(story) { return getJSON(story.chapterUrls[0]); }).then(function(chapter1) { addHtmlToPage(chapter1.html); }).catch(function() { addTextToPage("Failed to show chapter"); }).then(function() { document.querySelector('.spinner').style.display = 'none'; });
如果在获取第一章内容的时候失败了(如发生 500 错误,或者用户掉线等),程序会跳过后续所有针对请求成功的回调,其中包括 getJSON 方法中将响应数据转换为 JSON 格式的处理,还有把结果显示到页面上的操作。失败后真正发生的过程是,程序会跳转到 catch 方法的回调函数中。因此,前面任何一步操作过程中发生了错误都会将“Failed to show chapter”的错误信息显示到页面上。
同 JavaScript 中的 try/catch 一样,在捕获到错误后,代码会继续执行,因此代码中隐藏加载指示信息的操作总会执行,而这正是我们所期望的效果。上面的代码其实是下面这段同步代码的异步非阻塞版本:
try { var story = getJSONSync('story.json'); var chapter1 = getJSONSync(story.chapterUrls[0]); addHtmlToPage(chapter1.html); } catch (e) { addTextToPage("Failed to show chapter"); }
document.querySelector('.spinner').style.display = 'none';
如果你只是想使用“catch”来记录错误日志,而并不针对错误做相应恢复处理,那么只需要再次把错误抛出就可以了。在 getJSON 方法里可以这么做:
function getJSON(url) { return get(url).then(JSON.parse).catch(function(err) { console.log("getJSON failed for", url, err); throw err; }); }
现在已经搞定了一个章节内容的获取,接下来我们会想办法得到所有章节的内容。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论