ES6 学习笔记三

Promise 对象

1、Promise是异步编程的一种解决方案
2、Promise的两个特点:对象的状态不受外界的影响。一旦状态改变,就不会再变,任何时候都可以得到这个结果。
3、Promise也有一些缺点。首先,无法取消Promise,一旦新建它就会立即执行,无法中途取消。其次,如果不设置回调函数,Promise内部抛出的错误,不会反应到外部。第三,当处于Pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)
4、Promise对象是一个构造函数,用来生成Promise实例
5、Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject
6、then方法可以接受两个回调函数作为参数。第一个回调函数是Promise对象的状态变为resolved时调用,第二个回调函数是Promise对象的状态变为rejected时调用。其中,第二个函数是可选的,不一定要提供。这两个函数都接受Promise对象传出的值作为参数
7、catch用于指定发生错误时的回调函数

let postData = new Promise((resolve, reject) => {  
if (true) {  
resolve('success');  
} else {  
reject('error');  
}  
});  
postData.then(value => {  
console.log(111, value);  
}).catch(value => {  
console.log(222, value);  
}).finally(() => {  
console.log('一边打工,一边自学');  
});  

async 与 await

1、async 函数本质是 generator 的语法糖
2、async 函数返回一个 promise 对象
3、 async 函数内部 return 返回的值,会成为 then 方法回调函数的参数
4、async函数返回的Promise对象,必须等到内部所有await命令的Promise对象执行完,才会发生状态改变
5、正常情况下,await命令后面是一个Promise对象。如果不是,会被转成一个立即resolve的Promise对象
6、 只要一个await语句后面的Promise变为reject,那么整个async函数都会中断执行
7、如果有多个await命令,可以统一放在try...catch结构中
8、 如果await后面的异步操作出错,那么等同于async函数返回的Promise对象被reject
9、await命令后面的Promise对象,运行结果可能是rejected,所以最好把await命令放在try...catch代码块中
10、多个await命令后面的异步操作,如果不存在继发关系,最好让它们同时触发
11、await命令只能用在async函数之中,如果用在普通函数,就会报错

async function main() {
  try {
    var val1 = await firstStep();
    var val2 = await secondStep(val1);
    var val3 = await thirdStep(val1, val2);

    console.log('Final: ', val3);
  }
  catch (err) {
    console.error(err);
  }
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
今年不学习,明天惨唧唧。
zs4336
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!