- 什么算异步?
如:读取文件
ajax 申请
定时工作 setTimeout 等
Promise 将异步工作封装成对象,在异步实现后要执行的函数通过 then 给到 resolve 调用
之所以会封装 Promise 是因为我有异步工作要解决,例如一个申请 一个定时器工作
而后我须要在这些工作之后做一些事件 又不想天堂回调,所以我用 Promise 来封装
return new Promise((resolve, reject) => {try() {resolve()
} catch() {reject()
}
})
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 对象最初状态如何,都会执行的操作