学习阮一峰老师的ES6入门后的记录es6
<script> let promise = new Promise(function(resolve,reject){//resolve和reject是函数 console.log('promise建立'); resolve(); }) promise.then(function(){//至关于resolve() // console.log(a);//error跳到.catch console.log('promise的执行完成了'); }) .catch(function(){//至关于reject() console.log('promise的执行失败了'); }) </script>
.then()方法中的参数,fn1是resolved状态的回调函数,fn2(可选)是rejected状态的回调函数,通常只用fn1来做为promise成功的处理函数
注意:.then()返回的是一个新的promise实例,.then(fn1)fn1中的返回的数据做为新promise的参数promise
.then(null/undefined,function(){})的别名,是发生错误是的回调函数
注意:在promise执行顺序中当.then()的成功处理函数执行,致使不会执行.catch()中的函数,反之同样浏览器
不管是执行.then()仍是执行.catch(),finally都会执行异步
<script> let promise = new Promise(function(resolve,reject){ let i = 1; resolve(i);//调用.then()中的方法 i++; reject(i);//调用.catch()中的方法,不能与.then()一块儿执行 }) promise .then(function(num){ console.log(num); }) .catch(function(num){ console.log(num); }) .finally(function(){//不论执行.then仍是.catch,finally都会执行 console.log('finally'); }) </script>
promise对象.then,.catch为微任务函数
<script> setTimeout(function(){ console.log('setTimeout执行了');//宏任务 }) let promise = new Promise(function(resolve,reject){ console.log('promise执行了');//主进程 resolve();//or reject(); }) promise .then(function(){ console.log('.then执行了');//微任务 }) .catch(function(){ console.log('.catch执行了');//微任务 }) .finally(function(){ console.log('finally执行了');//微任务 }) </script>
上面代码的执行顺序是:
学习