前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网易云课堂公开课-Promise【文字版】

网易云课堂公开课-Promise【文字版】

作者头像
web前端教室
发布2018-10-08 11:34:19
8640
发布2018-10-08 11:34:19
举报
文章被收录于专栏:web前端教室web前端教室

今天的网易云课堂的公开课已经结束,因为是第一次,所以有些操作也不太熟练,下面是本次公开课的文字内容。

没赶上的同学可以去网易云课堂看它的视频回放。下次公开课我会再提前一些时间发通知的。

--- 下面是正文 ---

咱们今天要讲的是ECMAScript6,它里面异步编程,Promise。一句话介绍啊,它就是为了解决回调而出现的。

<!-- -->

今天课程的大概结构 :

- Promise它出现的原因;

- 怎么解决的方法;

- 它的一些方法

.then() //

.catch() //

.all() //

.race() //

.resolve() //

.reject() //

- 总结

<!-- -->

现在nodeJs特别的流行,但是这个东西它是以异步回调而运行的,

回调它提高效率,不用等待。

过多的回调,一层一层的,

但是它也造成了程序的可读性变差,

因为当前的操作,需要上一个操作返回的数据才能继续,

这样的写法多了之后,叫“回调地狱”,就例如下面这样,

function aa(){

function bb(){

function cc(){

function dd(){

....

}

}

}

}

为了解决这个过多层次的回调嵌套的问题,

es6它提出了 Promise 的实现。

<!-- Promise 它是怎么解决的呢? -->

它其实就是把上面那一层层的嵌套的函数,

给拉成了一条“线”,用 .then()之类 的方法给串起来了。

伪代码,用来表示含义,

Promise

.then(aa(...))

.then(bb(..))

.then(cc(...))

.then(dd(..));

在代码的结构上,由嵌套变成了一串纵向的方法,

当然了,这个代码肯定是错误的,它不能执行。

但是呢,我想说的是,这个promise,

它从结构上,改变了嵌套的这个层级,

这是它得以解决“回调地狱”的根本原因。

<!-- 具体来讲,它是如何解决的呢? -->

首先,就是 .then()方法,它有二个参数,

这二个参数都是函数,它其实是在 .then() 方法里进行的回调。

一个是成功,resolve

一个是失败,reject

.then()方法,调用的是一个 Promise对象,

.then方法,可以链式调用,每一个.then方法,都会获得上一次.then执行的结果。

看,demo1.html

<!-- -->

对于 Promise 对象,它有三个状态,

- pending,初始状态,未定;

- fulfilled,完成状态,成功!

<!-- resolve =>变成 fulfilled -->

- rejected,失败;

<!-- -->

.catch(),方法

它也返回一个 Promise 对象,主要用于捕获异常。

所以,一般时候 .then()的第二个参数都不写,

都使用 .catch() 方法

看,catch.html

<!-- -->

.all()方法,它就是迭代数组,用来操作一些异步什么的,

其实就是一个循环,

看,all.html

<!-- -->

.race(),它的参数也是一组可以迭代的参数,

区别,

只要这一组参数之中,有任意一个发生变化,

那么 Promise 对象的状态就改变了。

谁先变化 ,就用谁的值。

看,race.html

<!-- -->

resolve,接收一个参数,

- 可以是普通的值;

- 也可以是一个含有 .then 方法的对象;

- 也可以是一个 Promise 实例;

<!-- 上面这三种形式的参数,无非是对数据 的三种包装而已 -->

看,resolve.html

<!-- -->

reject,它和resolve相反,

它接收的参数,是异常。

此时返回的Promise对象的状态是 rejected,也就是失败。

看,reject.html

<!-- -->

这是第一次网易云课堂的公开课,有些操作也不太熟练,下次再公开课,就有经验了,

我的网易云课堂主页地址:

http://study.163.com/u/webfeel

请大家多给我点几个五星好评,谢谢

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 web前端教室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云课堂
云课堂聚焦教培机构 OMO 转型,为机构提供在线及混合式课堂解决方案,极速开课、多向互动、智能沉淀、一键分发,是教培课堂便捷、稳定的教学助手。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档