5.1JavaScript精华
9、使用Promises
Promises,是Javascript表现item的一种方式。它执行异步工作,在未来的某个时间点完成。遇到最多的promises,是使用Ajax请求。浏览器在后台发起HTTP请求,当请求完成,会使用promise提醒你的应用。在线面,作者创建了一个最小的AngularJS应用,来做一个Ajax请求。
|
<!DOCTYPE html> <html ng-app="demo"> <head> <title>Example</title> <script <link <link <script var myApp = angular.module("demo", myApp.controller("demoCtrl", var promise = $http.get("todo.json"); promise.success(function $scope.todos = data; }); }); </script> </head> <body ng-controller="demoCtrl"> <div <h1>To Do</h1> <table <tr><td>Action</td><td>Done</td></tr> <tr ng-repeat="item in todos"> <td>{{item.action}}</td> <td>{{item.done}}</td> </tr> </table> </div> </body> </html> |
作者创建了一个AngularJS模块,给他定义了一个叫做demoCtrl的控制器。该控制器使用$scope对象,提供数据给视图。
该模块,控制器,和视图,
|
var promise = $http.get("todo.json"); promise.success(function (data) { $scope.todos = data; }); |
$http服务(作者将在第20章描述),用于做Ajax请求,get方法含有你想要从服务器得到的文件的URL。
Ajax请求以异步执行,浏览器继续运行该程序,知道请求完成。$http.get方法返回一个promise对象,作者可以用来接收关于Ajax请求的提醒。在该例中,作者使用success方法来注册一个callback函数,当请求完成后被触发。Callback函数从服务器接收数据,作者用来指派一个属性给$scope。这时,ng-repeat指令使用to-do items分发table的内容。Success方法是三个promise对象定义中的一个。
|
Name |
Description |
|
Error(callback) |
指定一个callback函数,当Promise不能完成时,被调用 |
|
Success(callback) |
指定一个callback函数,当Promise完成时,被调用 |
|
Then(success,err) |
指定一个callback,如果promise成功或失败时被调用 |
这里有三个方法,以函数作为参数,基于promise的返回状态调用。Success callback函数,传递从服务器获取的数据,error callback接收遇到的问题明细。
提示:可以把promise定义的方法,理解为事件。
所有三种promise方法,返回其他promise对象,允许异步任务链式调用。
|
<!DOCTYPE html> <html ng-app="demo"> <head> <title>Example</title> <script <link <link <script var myApp = angular.module("demo", myApp.controller("demoCtrl", $http.get("todo.json").then(function $scope.todos = response.data; }, $scope.todos = }).then(function $scope.todos.push({action: }); }); </script> </head> <body ng-controller="demoCtrl"> <div <h1>To Do</h1> <table <tr><td>Action</td><td>Done</td></tr> <tr ng-repeat="item in todos"> <td>{{item.action}}</td> <td>{{item.done}}</td> </tr> </table> </div> </body> </html> |
这里,作者使用then方法两次,第一次处理$http.get方法的相应。
更多的Promise的例子在第20章,和第21章。
5.1JavaScript精华的更多相关文章
- 如何找出标有"App Store 精华","Essentials"的所有软件?
如何找出标有"App Store 精华","Essentials"的所有软件? 中国区: +"App Store 精华" site:http ...
- Web 前端开发精华文章集锦(jQuery、HTML5、CSS3)【系列十七】
<Web 前端开发精华文章推荐>2013年第五期(总第十七期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HTML5 和 C ...
- iteye上总结的编程精华资源
原文:http://www.iteye.com/magazines/130 博客是记录学习历程.分享经验的最佳平台,多年以来,各路技术大牛在ITeye网站上产生了大量优质的技术文章,并将系列文章集结成 ...
- MVCC PostgreSQL实现事务和多版本并发控制的精华
原创文章,同步发自作者个人博客,http://www.jasongj.com/sql/mvcc/ PostgreSQL针对ACID的实现机制 事务的实现原理可以解读为RDBMS采取何种技术确保事务的A ...
- 【资源】C++学习资料 - 逆天整理 - 精华无密版【最新】
再失效就太无语了,链接都是多份的~~—————————————————基础——————————————C++环境搭建(全套)http://pan.baidu.com/s/1o6y0smY链接:http ...
- Web 开发精华文章集锦(jQuery、HTML5、CSS3)【系列二十七】
<Web 前端开发精华文章推荐>2014年第6期(总第27期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- Web 前端开发人员和设计师必读精华文章【系列二十六】
<Web 前端开发精华文章推荐>2014年第5期(总第26期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十三】
<Web 前端开发精华文章推荐>2014年第2期(总第23期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十二】
<Web 前端开发精华文章推荐>2014年第一期(总第二十二期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML ...
随机推荐
- 细聊分布式ID生成方法
细聊分布式ID生成方法 https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=403837240&idx=1&sn=ae9 ...
- 30天,O2O速成攻略【7.25北京站】
活动概况 时间:2015年7月25日13:30-16:30 地点:车库咖啡(北京市海淀西大街48号鑫鼎宾馆二层) 主办:APICloud.领通科技.快易行 网址:www.apicloud.com 费用 ...
- idea 的问题
IDEA的maven项目中,默认源代码目录下的xml等资源文件并不会在编译的时候一块打包进classes文件夹,而是直接舍弃掉. 如果使用的是Eclipse,Eclipse的src目录下的xml等资源 ...
- Speed-BI云平台正在公测中,欢迎大家体验!
Speed-BI云平台正在公测中,欢迎大家体验.访问地址:http://speedbi.cn 支持IE(建议IE8以上),Edge,Chrome,Firefox,Safari等任意浏览器,以及采用这几 ...
- Android系统自带样式(@android:style/)
在AndroidManifest.xml文件的activity中配置 1.android:theme="@android:style/Theme" 默认状态,即如果theme这里不 ...
- vim中.swp文件处理
参考: http://blog.csdn.net/lingdxuyan/article/details/4993868 http://www.cnblogs.com/softwaretesting/a ...
- .NET中常见对象类型
.NET中六大内置对象:1.Response 2.Request 3.Session 4.Appliction 5.Server 6.Cookie System.Web.HttpCo ...
- zend optimizer在wamp的基础上安装
在用wampserver集成开发环境下,有时会碰到一些开源程序需要zend optimizer的支持,下面我用的wamp的版本是2.0,optimizer的版本是ZendOptimizer-3.3.3 ...
- Lintcode: Majority Number III
Given an array of integers and a number k, the majority number is the number that occurs more than 1 ...
- ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转载)
原文地址: http://www.trinea.cn/android/arraylist-linkedlist-loop-performance/ 原文地址: http://www.trinea.cn ...