promise,async,await

promise,async,await

promise

Promise最大的好处是在异步执行的流程中,把执行代码处理结果的代码清晰地分离了

语法:

1
2
3
4
5
6
7
8
9
// 创建
const p = new promise((resolve, reject) => {
...
resolve()
...
reject()
})
// 使用
p.then(fn1).catch(fn2)

特点:

  • 创建promise实例时,需要传入一个回调函数,该回调函数有两个函数参数,执行过程中会在你需要的时机调用两个传入的函数
  • 使用promise时,p.then()内传入的函数就是第一个参数resolve的执行内容,p.catch()内传入的函数就是第二个参数reject的执行内容

promise配合async&await使用

1
2
3
4
5
6
7
8
9
10
11
// 只有带有async的函数内部才能使用await
// 使用函数包裹p的执行,在函数内部使用await等待p执行结束(只有p执行完了才能往下继续执行)
// foo内部可以使用判断来实现then和catch方法,如果p内部会报错(例如读取文件)就使用try~catch来分别实现then和catch方法
async function foo () {
await p
if (...) {
fn1
} else {
fn2
}
}