首页 > 其他 > 详细

es6学习笔记

时间:2018-11-29 16:32:47      阅读:148      评论:0      收藏:0      [点我收藏+]
1、promise对象的使用
Promise是一个构造函数,使用的时候需要new一下,Promise需要接收一个参数,这个参数是一个函数,并且该函数需要传入2个参数resolve、reject,分别表示异步操作执行成功后的回调函数和异步操作执行失败后的回调函数。

1.1、我们用Promise的时候一般是包在一个函数中,在需要的时候去运行这个函数,因为new promise的时候,传入其中的函数会自动执行,所以我们需要控制其中的函数在需要的时候才去执行

1.2、对于Promise的then()方法,then总是会返回一个Promise实例,因此你可以一直调用then

var p = new Promise( (resolve,reject)=>{
resolve(); //把Promise变成成功的状态
} )

var p = new Promise( (resolve,reject)=>{ //内部有三种状态,pending、resolve、reject
return resolve("成功"); //进入成功执行的代码 一般会加个return,阻止后续代码的执行
reject(); //进入执行失败的代码 resolve与reject二者只会执行前一个,后者不会执行,但是后续的代码还会继续执行
console.log(); //会继续执行到这里
} )
p.then( (data)=>{ //这里的data接收上面resolve传入的"成功"字符串
console.log("then:"+data);
} )

1.3、then方法是一个实例方法,建立在返回p实例的基础上
then( ()=>{ //接收2个参数,前者是上面进入成功状态执行,后者是上面进入失败状态执行
console.log(‘成功‘) //上面的resolve()时进入这里
},()=>{ //上面的reject()时进入这里
console.log(‘失败‘)
} )
tips、但是一般不使用上面的写法

p.then( (data)=>{ //then默认返回成功状态
console.log(data); //成功
} ) //成功状态时进入
p.catch( ()=>{
console.log("失败");
} ) //失败状态时进入

var p = new Promise( (resolve,reject)=>{
resolve("成功");
} )
var p2 = p.then( ()=>{
return "非promise对象" //下面的p2.then会走成功状态的代码,否则走失败状态的代码
} )

后续链式调用then方法,返回的是一个Promise对象,这个返回的Promise对象的状态是成功还是失败,取决于then方法内部的代码,如果内部代码返回的是非Promise对象,无论是有值还是undefined,都是resolve(),否则,如果内部返回的是Promise对象,那么如果该返回的Promise对象是reject,那么then返回的是reject,否则就是resolve
p2.then( (data)=>{ //
console.log(data)
} )

1.4、catch方法
catch相当于then的第二个参数
var p = new Promise( (res,rej)=>{
res(‘成功‘);
} )

p.then( ()=>{
console.log( 1 )
} ).then( ()=>{
console.log( 2 )
} ).catch( (err)=>{ //捕捉失败
console.log(err)
} ).finally( ()=>{ //匿名函数里面没有参数了,不管执行了成功还是失败,这里都会执行到
console.log(‘执行完毕‘);
} )
console.log(‘这儿的代码仍然能执行‘);
执行了catch方法,捕捉错误,不会影响后续代码的执行

es6学习笔记

原文:http://blog.51cto.com/9161018/2323746

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!