AngularJS Promise
来源:互联网 发布:数据库设计方面的书籍 编辑:程序博客网 时间:2024/05/16 17:01
首先看一下异步函数经常遇到的一个问题:
fetchUser(function(user) { fetchUserPermissions(user, function(permissions) { fetchUserListData(user, permissions, function(list) { // 处理数据列表 }); });});
从本质上说,异步返回的方式和程序同步处理之间存在冲突,从而导致了多重嵌套的函数,这样既难追踪当前上下文,也会使错误变得麻烦。
下面我们使用Promise方案提供的then概念,重写这段代码:
// 创建一个延迟响应var deferred = $q.defer();var fetchUser = function() { //再进行异步调用之后,使用响应值调用deferred.resolver deferred.resolver(user); //在出错的情况下调用deferred.reject deferred.reject('Reason for failure');}deferred.promise.then(fetchUser) .then(fetchUserPermissions) .then(fetchUserListData) .then(function(list)) { //处理数据列表 }, function(errorReason) { //在任何一个步骤中发生的错误,都可以在这里处理 });
可以感觉的到代码更加整洁了,并且提供了链式的作用域,以及单一的出错点处理。所有的这一切只需要你注入$q服务即可。
Promise接口从以下方面对异步请求做出规范:
- 异步请求返回一个promise,而不是返回具体值。- Promise带有一个then函数,这个函数有两个参数:第一个参数是处理‘resolved’和‘success’事件 的函数,第二个参数是处理‘rejected’和‘failure’事件的函数。调用这两个函数时将会把结果或拒绝 的原因作为参数传递进去。- 只要返回的结果是合法的,接口就可以保证这两个函数中的一个会被调用。
0 0
- AngularJS Promise
- AngularJS Promise
- AngularJS Promise
- Promise in AngularJS
- chained promise in angularJs
- Promise in AngularJS
- AngularJS中的Promise
- AngularJS中的Promise
- Promise in AngularJS
- Angularjs promise对象解析
- Angularjs promise对象解析
- angularjs中的promise
- Angularjs promise对象解析
- Angularjs promise对象解析
- angularjs 中的 $promise
- Angularjs promise对象解析
- angularJS $q and promise
- AngularJs 之 Promise 探究
- 【DB】 数据库完整性和约束
- 加速Android Studio/Gradle构建
- hibernate-helloworld
- HTTP Live Streaming直播
- 五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程
- AngularJS Promise
- 冒泡排序,选择排序,快速排序,堆排序与二分查找算法
- 关于myeclipse 2015 破解 integrity check error 问题
- GoLang操作Mysql
- HTTP协议与状态链接解决方案cookie,session的关系
- Java for Web学习笔记(十一):JSP(1)何为JSP
- VMWare下CentOS的网络设置
- JabRef中文手册
- Android Studio的自动Import功能