1. 什么算异步?

如:读取文件
ajax 请求
定时任务 setTimeout 等

Promise 将异步任务封装成对象,在异步完成后要执行的函数通过 then 给到 resolve 调用

之所以会封装Promise是因为我有异步任务要处理,例如一个请求 一个定时器任务
然后我需要在这些任务之后做一些事情 又不想地狱回调,所以我用 Promise 来封装

return new Promise((resolve, reject) => {
    try() {
        resolve()
    } catch() {
        reject()
    }
})

2.Promise 作用:

1.避免地狱回调,支持链式调用
2.捕获错误(通过报错/通过 reject())

resolve:
将异步任务从pending请求变为resolve成功返回
reject:
从请求变为失败
pending:
请求中

对于链式调用,catch 是对整个链式进行错误捕获。链式写法的错误处理具有“冒泡”特性,链式中任何一个环节出问题,都会被catch到,同时在某个环节后面的代码就不会执行了(catch移动位置特殊处理,例如 未写在最后 )catch完如果还有then还会继续往下走

并行执行:
Promise.all

async/await 的出现是为了解决多个.then 的链式回调,写法更优雅。
当需要对某个异步任务捕获异常时,就用 try catch

用 await 声明的 Promise 异步返回,必须等待到有返回值。(注意 setTimeout 不是Promise 异步,只是普通异步)

finally 方法用于指定不管 Promise 对象最后状态如何,都会执行的操作


Grace糖衣
15 声望2 粉丝

用于记录一些平时遇到的问题