- 内容简介
- 译者序
- 前言
- 第 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 入门
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
事件机制并不是万能的
事件机制善于处理在同一个对象上反复发生的事情,如 keyup、touchstart 等。在使用这些事件时,你不需要关心绑定监听器前发生了什么事情。但是,当遇到异步请求成功/失败的场景时,你可能更喜欢下面的代码:
img1.callThisIfLoadedOrWhenLoaded(function() { // 加载成功 }).orIfFailedCallThis(function() { // 加载失败 });
// and… whenAllTheseHaveLoaded([img1, img2]).callThis(function() { // 全部加载成功 }).orIfSomeFailedCallThis(function() { // 一个或多个加载失败 });
这就是 Promise,代码中我们使用了更合适的命名来帮助理解。如果 HTML 中的 image 元素有个可以返回 Promise 的“ready”方法的话,我们就可以像下面这样来写:
img1.ready().then(function() { // 加载成功 }, function() { // 加载失败 }); // 以及 ... Promise.all([img1.ready(), img2.ready()]).then(function() { // 全部加载成功 }, function() { // 一个或多个加载失败 });
基本上 Promise 与事件监听还是很相似的,除了以下几点:
- 一个 Promise 只能成功或者失败一次。它不能进行从成功到失败的状态转换,反之亦然。
- 如果在一个 Promise 成功或者失败后添加了相应的回调函数,那么该回调还是会被立即执行,尽管相关事件早已发生。
这些特性非常适合处理异步请求成功/失败的场景,因为你不需要花太大精力去关心相关状态改变的确切时间点,从而可以花更多时间去处理状态更改后的业务逻辑。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论