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 对象最后状态如何,都会执行的操作
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。