promise

Promise是一种解决异步编程的方案,是为解决异步处理回调金字塔问题而产生的
Promise有三种状态,对象的状态不受外界影响
    pending 初始状态
    fulfilled 成功状态
    rejected 失败状态
以上三种状态,只有异步操作的结果可以决定当前是哪一种状态,其他任何操作都无法改变这个状态
Promise的状态一旦改变,就不会再变,任何时候都可以得到这个结果,状态不可以逆,只能由pending变成fulfilled或者由pending变成rejected
Promise的三个缺点
    1)无法取消Promise,一旦新建它就会立即执行,无法中途取消
    2)如果不设置回调函数,Promise内部抛出的错误,不会反映到外部
    3)当处于pending状态时,无法得知目前进展到哪一个阶段,是刚刚开始还是即将完成
常用方法:
Promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例
Promise.race只要三个promise中有一个满足条件, 就会执行.then(用的较少),先执行到成功就返回成功的状态,返回失败就是失败状态
Promise.resolve()函数被执行时, 会将promise的状态从 pending 改成 fulfilled 成功
Promise.reject()函数被执行时, 会将promise的状态从pending 改成 rejected 失败

async、await
async 作为一个关键字放在函数的前面,表示该函数是一个异步函数,async修饰的函数的返回值是一个promise对象
await即等待,用于等待一个Promise对象。它只能在异步函数 async function中使用,否则会报错
它的返回值不是Promise对象,而是Promise对象处理之后的结果
await表达式会暂停当前 async函数的执行,等待Promise 处理完成,
如果 Promise 正常处理(fulfilled),await会拿到resolve传递出来的异步数据,然后再继续执行 async函数;
如果 Promise 处理异常(rejected),await 表达式会把 Promise 的异常原因抛出。



追问:
1.all跟allSettled的区别;
2.race,any区别;