1.什么是Promise?
Promise是一种异步编程的解决方案。
2.为什么要用Promise?
背景:js是单线程执行的,所以JavaScript的所有网络操作,浏览器事件,都必须是异步执行。异步执行会产生很多回调函数,为了解决这种回调函数太多(又称回调地狱),社区提出了Promise,作用与回调方法一致。
3.怎么用Promise?
let p1 = new Promise(function(resolve, reject) {
// TODO
});
p1.then(res => {
// p1执行完成 do something
});
p1.catch(err => {
// 捕获到p1错误 do something
});
// 当[]中所有状态变为resolve时,才会执行then
let promise = Promise.all([p1, p2, ...]);
promise.then(result => {
// result 为p1, p2, ... 的结果集
});
promise.catch(err => {});
promise.race([p1, p2, ...]).then(res => {}); // 当[]中有一个状态变为resolve时,才会执行then,ES7中新添加了finally方法,接收一个函数,这个方法一定会被执行。
4.async和Promise的关系?
async是ES7提出的,解决异步编程的新方法,使异步程序看起来像同步执行一样。async是基于Promise实现的。
5.await是用来做什么的?
await类似于Promise的.then();
async function a() {
return 'aaa';
}
let b = await a(); // b即为a返回的结果