Promise
promise是什么?
Promise是异步编程的一种解决方案,解决了回调地狱的问题。有了Promise对象,就可以将异步操作以同步操作的流程表达出来。
特点
- 对象的状态不受外界影响。有三种状态:pending(进行中)、fulfilled(已成功)和rejected(以失败)
- 一旦状态改变,就不会再变
缺点
- 无法取消Promise,一旦新建他就会立即执行,无法中途取消。
- 如果不设置回调函数,Promise内部跑出的错误无法反应到外部
- 当pending的时候,无法知道进展到了哪一步
promise的链式调用
promise.then()、promise.catch() 和 promise.finally()这些方法还会返回一个新生成的 promise 对象
Promise.all
Promise.race
demo
let promise = new Promise(function(resolve, reject) {
console.log('Promise')
resolve()
})
promise.then(function() {
console.log('resolved')
})
console.log('Hi')
//Promise
//Hi
//resolved
// 备注:
// resolve 触发后续then的回调
// reject 触发后续catch的回调
promise立即执行,首先输出
Promise。promise.then是一个微任务,会放到微任务队列里。先执行同步任务,所以输出Hi,最后输出resolved
async/await 同步写法
使用await函数必须使用async标识,await后面必须跟一个promise实例,同步写法解决.then异步问题,再也没有回调
- 执行
async函数返回的是Promise对象 await相当于Promise的thentry...catch可捕获异常,代替了Promise的catch