首先先推荐一篇博文:http://blog.csdn.net/jasonzds/article/details/53717501

这篇博文很清晰的说明了Promise的用法,这里来简单总结一下:

Promise主要用来让连续的回调变得清晰。比如:

连续获取豆瓣电影数据:

  $.get("https://api.douban.com/v2/movie/top250?count=5",function (data) {
console.log(data);
$.get("https://api.douban.com/v2/movie/coming_soon?count=5",function (data) {
console.log(data);
$.get("https://api.douban.com/v2/movie/in_theaters?count=5",function (data) {
console.log(data);
})
})
})

这样写的话代码一复杂就会非常乱。如何用Promise来简化它呢?

  new Promise(function (resolve, reject) {
$.get("https://api.douban.com/v2/movie/top250?count=5",function (data) {
resolve(data)
})
}).then(function (res) {
console.log(res); //这里获取到的是resolve(data)里的data。
return $.get("https://api.douban.com/v2/movie/coming_soon?count=5",function (data) {
return data
})
}).then(function (res) {
console.log(res); //这里获取到的是上一个then中return回来的数据
$.get("https://api.douban.com/v2/movie/in_theaters?count=5",function (data) {
console.log(data);
})
})

虽然代码量多了些,但是维护起来明显会更加方便。

简单谈谈js中Promise的用法的更多相关文章

  1. 简单谈谈js中的MVC

    MVC是什么? MVC是一种架构模式,它将应用抽象为3个部分:模型(数据).视图.控制器(分发器). 本文将用一个经典的例子todoList来展开(代码在最后). 一个事件发生的过程(通信单向流动): ...

  2. 浅谈JS中 reduce() 的用法

    过去有很长一段时间,我一直很难理解 reduce() 这个方法的具体用法,平时也很少用到它.事实上,如果你能真正了解它的话,其实在很多地方我们都可以用得上,那么今天我们就来简单聊聊JS中 reduce ...

  3. JS中 reduce() 的用法

    过去有很长一段时间,我一直很难理解 reduce() 这个方法的具体用法,平时也很少用到它.事实上,如果你能真正了解它的话,其实在很多地方我们都可以用得上,那么今天我们就来简单聊聊JS中 reduce ...

  4. [转载]js中return的用法

    一.返回控制与函数结果,语法为:return 表达式; 语句结束函数执行,返回调用函数,而且把表达式的值作为函数的结果 二.返回控制,无函数结果,语法为:return;  在大多数情况下,为事件处理函 ...

  5. js中this的用法

    经过近几周的模拟面试题,我查询了一些资料,今天就来说说,在js中this的用法吧.方法有四:第一,用作全局变量,第二,用作表该对象,第三,用作构造函数,第四,用作call和applay

  6. JQuery之append和appendTo的区别,还有js中的appendChild用法

    JQuery之append和appendTo的区别 append()前面是要选择的对象,后面是要在对象内插入的元素内容 appendTo()前面是要插入的元素内容且为Jquery对象,而后面是要选择的 ...

  7. JS中event.keyCode用法及keyCode对…

    js中event.keyCode用法及keyCode对照表 标签: javascriptJavaScriptJavascriptjavaScript 2012-12-11 15:11 HTML Jav ...

  8. 简单谈谈Python中的几种常见的数据类型

    简单谈谈Python中的几种常见的数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等 ...

  9. js中escape的用法----前端页面简单加密

    escape() 方法,它用于转义不能用明文正确发送的任何字符.比如,电话号码中的空格将被转换成字符 %20,从而能够在 URL 中传递这些字符. http://localhost:8080/a?na ...

随机推荐

  1. appium滑动操作(向上、向下、向左、向右)

    appium滑动操作(向上滑动.向下滑动.向左滑动.向右滑动) 测试app:今日头条apk 测试设备:夜游神模拟器 代码如下: 先用x.y获取当前的width和height def getSize() ...

  2. springMvc学习笔记一

    什么是springmvc  springmvc就是spring框架的一个模块 所以springmvc与spring之间无需通过中间整合层进行整合的. springmvc又是基于mvc的web框架 mv ...

  3. 使用maven搭建hibernate的pom文件配置

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  4. yum仓库详细解读

    Yum:Yellowdog Updater,Modified的简称,起初由yellow dog发行版的开发者Terra Soft研发,用Python编写,后经杜克大学的Linux@Duke开发团队进行 ...

  5. 转 Caffe学习系列(12):训练和测试自己的图片

    学习caffe的目的,不是简单的做几个练习,最终还是要用到自己的实际项目或科研中.因此,本文介绍一下,从自己的原始图片到lmdb数据,再到训练和测试模型的整个流程. 一.准备数据 有条件的同学,可以去 ...

  6. java 8 Lambda表达式(翻译自Stackoverflow)

    (原文链接)Lambda只能作用于一个只有一个抽象方法的函数式接口(Function Interface),不过函数式接口可以有任意数量default或static修饰的方法(因此,它们有时也被当做单 ...

  7. mysql常用基础操作语法(三)~~对数据的增删改操作【命令行模式】

    1.插入单条数据:insert into tablename(字段名1,字段名2,...) values(值1,值2,...); 从图中可以看出,插入时不需要每个字段都有值(在没有相关的约束前提下), ...

  8. ssh禁止密码登录

    1.root用户登陆后,运行以下第一句指令,其他根据提示进行输入: ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file ...

  9. R语言︱机器学习模型评价指标+(转)模型出错的四大原因及如何纠错

    笔者寄语:机器学习中交叉验证的方式是主要的模型评价方法,交叉验证中用到了哪些指标呢? 交叉验证将数据分为训练数据集.测试数据集,然后通过训练数据集进行训练,通过测试数据集进行测试,验证集进行验证. 模 ...

  10. vxWorks BSP主要文件目录的组成及主要文件的作用

    vxWorks BSP主要文件目录的组成及主要文件的作用 1.目录target/config/All: 这个目录下的文件是所有BSP文件共享的,不是特别需要不要更改里面的任何文件. a.configA ...