ANGULAR JS PROMISE使用
2015-09-10 22:51
447 查看
Promise是一种模式,以同步操作的流程形式来操作异步事件,避免了层层嵌套,可以链式操作异步事件。
我们知道,在编写javascript异步代码时,callback是最最简单的机制,可是用这种机制的话必须牺牲控制流、异常处理和函数语义化为代价,甚至会让我们掉进出现callback大坑,而promise解决了这个问题。
下面实例是angularjs 的promise的实现方式:
其中我们可以通过defered.notify ,defered.resolve,defered.reject 传递参数给其后的链式操作。
我们知道,在编写javascript异步代码时,callback是最最简单的机制,可是用这种机制的话必须牺牲控制流、异常处理和函数语义化为代价,甚至会让我们掉进出现callback大坑,而promise解决了这个问题。
下面实例是angularjs 的promise的实现方式:
<!DOCTYPE html> <html ng-app="app"> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script src="assets/angular.min.js"></script> </head> <body ng-controller="ctrl"> <script type="text/javascript"> var app = angular.module("app",[]); app.controller('ctrl', ['$scope','$q',function($scope,$q){ function okToGreet(name){ return name === 'Robin Hood'; } function asyncGreet(name) { var deferred = $q.defer(); setTimeout(function() { // 因为这个异步函数fn在未来的异步执行,我们把代码包装到 $apply 调用中,一边正确的观察到 model 的改变 $scope.$apply(function() { deferred.notify('About to greet ' + name + '.'); if (okToGreet(name)) { deferred.resolve('Hello, ' + name + '!'); } else { deferred.reject('Greeting ' + name + ' is not allowed.'); } }); }, 1000); return deferred.promise; } var promise = asyncGreet('Robin Hood'); promise.then(function(greeting) { console.info('Success: ' + greeting); }, function(reason) { console.info('Failed: ' + reason); }, function(update) { console.info('Got notification: ' + update); }); }]); </script> </body> </html>
其中我们可以通过defered.notify ,defered.resolve,defered.reject 传递参数给其后的链式操作。
相关文章推荐
- 京东众筹双色球中奖号计算方法
- ArcGIS for Javascript API 3.14本地部署
- ArcGIS API for JavaScript开发笔记(一)——ArcGIS for Javascript API 3.14本地部署
- js观察者模式发布/订阅
- ANGULAR JS WATCH监听使用
- 关于JS单选按钮与复选按钮验证是否选中
- .Net中webBrowser控件JS交互
- JSDoc 3 入门
- JavaScript权威设计--JavaScript表达式与运算符(简要学习笔记五)
- JavaScript跨域详解
- JS 获取某个时间距离现在时间有多少时分秒
- javascript生成器函数function generator初探和理解
- js实现文字拖动
- Jackson如何使JSON输出变得优雅?
- 【js基础】js排序方法——快排+堆排+插排+选择排
- js禁用按键和鼠标单击
- JSON解析----个人学习笔记
- js 调试
- Javascript学习笔记
- Javascript学习笔记