5.1JavaScript精华

9、使用Promises

Promises,是Javascript表现item的一种方式。它执行异步工作,在未来的某个时间点完成。遇到最多的promises,是使用Ajax请求。浏览器在后台发起HTTP请求,当请求完成,会使用promise提醒你的应用。在线面,作者创建了一个最小的AngularJS应用,来做一个Ajax请求。




<!DOCTYPE
html>

<html ng-app="demo">

<head>

<title>Example</title>

<scriptsrc="angular.js"></script>

<linkhref="bootstrap.css"rel="stylesheet"/>

<linkhref="bootstrap-theme.css"rel="stylesheet"/>

<scripttype="text/javascript">

var myApp =
angular.module("demo",[]);

myApp.controller("demoCtrl",function($scope,
$http){

var promise =
$http.get("todo.json");

promise.success(function(data){

$scope.todos
= data;

});

});

</script>

</head>

<body ng-controller="demoCtrl">

<divclass="panel">

<h1>To Do</h1>

<tableclass="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>

<scriptsrc="angular.js"></script>

<linkhref="bootstrap.css"rel="stylesheet"/>

<linkhref="bootstrap-theme.css"rel="stylesheet"/>

<scripttype="text/javascript">

var myApp =
angular.module("demo",[]);

myApp.controller("demoCtrl",function($scope,
$http){

$http.get("todo.json").then(function(response){

$scope.todos
= response.data;

},function(){

$scope.todos
=[{action:"Error"}];

}).then(function(){

$scope.todos.push({action:"Request Complete"});

});

});

</script>

</head>

<body ng-controller="demoCtrl">

<divclass="panel">

<h1>To Do</h1>

<tableclass="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精华

时间: 2024-11-10 14:09:39

5.1JavaScript精华的相关文章

Scrapy精华教程(六)——自动爬取网页之II(CrawlSpider)

一.目的. 在教程(二)(http://blog.csdn.net/u012150179/article/details/32911511)中使用基于Spider实现了自己的w3cschool_spider,并在items.py中定义了数据结构, 在pipelines.py中实现获得数据的过滤以及保存. 但是以上述方法只能爬取start_url列表中的网页,而网络爬虫如google等搜索引擎爬虫实现的就是对整个互联网的爬取,所以在本教程中研究使用scrapy自动实现多网页爬取功能. 在教程(五)

利弗莫尔的操盘精华篇

[转载]利弗莫尔的操盘精华篇 (2017-02-01 17:27:47) 转载▼ 标签: 转载 分类: 经济 原文地址:利弗莫尔的操盘精华篇作者:   1.先看大盘,大盘不好,不要买入任何股票,只在大盘趋势向上时才操作. 2.先做最强势板块,跟踪观察. 3.在强势板块中选龙头股. 4.做好资金管控,先用小资金试仓,涨时加仓.          一位统帅打伏,他总是要先侦察,并出动小部队试探虚实,确定值不值得打,赢的机率大不大,只有赢面大的时候才会把后续部队压上,精明的统帅总是时常储备有后备军的和

【资源】Android学习资料 - 逆天整理 - 精华无密版

 入门看视频,提高看书籍,飘升做项目.老练研开源,高手读外文,大牛讲低调~  极客学院安卓Android全套最新视频教程[17G全套视频+独家源码] http://pan.baidu.com/s/1kT5nSkn 链接: http://pan.baidu.com/s/1jGsyJ0y 密码: btbg 传智播客Java安卓方向就业班全套视频下载 http://pan.baidu.com/s/1eQq4YXG 链接: http://pan.baidu.com/s/1qWA3yyS 密码: p7qj

【资源】IOS学习资料 - 逆天整理 - 精华无密版【最新】【精华】

 入门看视频,提高看书籍,飘升做项目.老练研开源,高手读外文,大牛讲低调~  01.IOS基础 01.iOS开发快速入门教程 http://pan.baidu.com/s/1kT3ScOf 链接: http://pan.baidu.com/s/1kTKheAF 密码: yycm 02.苹果开发零基础入门教程 http://pan.baidu.com/s/1dDfHL77 链接: http://pan.baidu.com/s/1o6iNkIu 密码: nn3a 03.黑马IOS2期基础 http:

《周鸿祎自述:我的互联网方法论》之精华笔记和思考

1. 用户不会在乎你的七大功能,八大特色,只要有一个功能可以打动他,可以解决它心中的痛,或者挠去他心中的痒,那你就有可能获得用户的信赖. 2. 不要给用户谈你们公司有多少个院士,多少个千人计划,多少个专家,多少个博士,你们的产品用到了多fancy的技术,大部分人不会care的. 最显然的就是这种科技新闻下的评论数量几乎为0. 3. 你做了一个新产品,然后你给用户说我用到了最高精尖的Deep Learning技术,通过利用人工神经网络模拟人脑神经的层次化结构实现更加高效精准识别,他们才不会在乎.

电子商务知识精华,屌丝完美逆袭!(转)

电子商务知识精华,屌丝完美逆袭! 何为电子商务? 电子商务源于英文ELECTRONIC COMMERCE,简写为EC.顾名思义,其内容包含两方面,一是电子方式,二是商贸活动.指商务活动的电子化.网络化,通过Internet的技术或各种商务网络平台,完成商务交易,获得产品和服务. 1)        优点:品种齐全,种类繁多,一站购物,电子支付,市场全球化,全天候服务,成本低廉化(营销.店铺大小,地理位置.生产商直销等),减少人力物力,网络代购(国外独有品牌.国外价格优势.新鲜好玩),价格比较,网

Android Bitmap 开源图片框架分析(精华三)

主要介绍这三个框架,都挺有名的,其他的框架估计也差不多了 Android-Universal-Image-Loaderhttps://github.com/nostra13/Android-Universal-Image-Loader ImageLoaderhttps://github.com/novoda/ImageLoader Volley(综合框架,包含图片部分)https://github.com/mcxiaoke/android-volley 扯淡时间,可以跳过这段这些开源框架的源码还

Android Bitmap 开源图片框架分析(精华四)

disk缓存主要难点在于内存缓存,disk缓存其实比较简单,就是图片加载完成后把图片文件存到本地方便下次使用 同样,先贴一下官方主页的介绍(主页地址见文章最开始处)和内存缓存差不多,根据算法不同提供了几种类别,可以自行通过ImageLoaderConfiguration.discCache(..)设置<ignore_js_op> 硬盘缓存,保存是以文件的形式框架提供了4种类型,具体算法规则不同,看名字我们大概也能知道对应意思 UnlimitedDiscCache                

asp .NET弹出窗口 汇总(精华,麒麟创想)

asp .NET弹出窗口 汇总(精华,麒麟创想) 注://关闭,父窗口弹出对话框,子窗口直接关闭 this.Response.Write("<script language=javascript>window.close();</script>"); //关闭,父窗口和子窗口都不弹出对话框,直接关闭 this.Response.Write("<script>");this.Response.Write("{top.ope