promise
- 状态:
pending:异步任务正在执行
fulfilled(resolved):异步任务执行完成
rejected:失败。
// 基本用法
new Promise((resolve,reject) => {
//.....
resolve()
},(err) => {
reject()
});
async
async 声明的是个function,返回的是一个promise对象。
async function fn1() {
console.log("hello")
await f1( console.log(111))
console.log(222)
}
async function fn1() {
return Promise.resolve('hello')
// retrun new Promise(resolve => { resolve('hello') })
}
await
awiat 表达式会暂停当前 async function 的执行,等待 Promise 处理完成,必须放在async里使用。
创建一个 promise 对象,然后把剩下的 async 函数中的操作放到 then 回调函数中。
为什么要用async,使用场景
使异步代码,看起来像同步
如何阻止promise的链式调用
- 抛出异常
- 返回reject
new Promise(reslove => {
resolve()
}).then(() => {
// 通过抛出异常来终止
throw 'stop'
// 通过reject来终止
Promise.reject('stop')
}).then(() => {
// 这里将不会在调用
}).catch((err) => {
// 执行这里
}).finally(() => {
// 一定会执行这里
})