JS使用Promise延迟执行

await

MDN的描述:

await 表达式会暂停当前 async function 的执行,等待 Promise 处理完成。
若 Promise 正常处理(fulfilled),其回调的resolve函数参数作为 await 表达式的值,继续执行async function。
若 Promise 处理异常(rejected),await 表达式会把 Promise 的异常原因抛出。
另外,如果 await 操作符后的表达式的值不是一个 Promise,则返回该值本身。

或者可以这样简单理解

await只能在async function中使用。
await把它后面的异步方法变成了同步方法,resolve函数参数作为await表达式的值。
await后的方法异常会抛出,所以外层要try/catch

async/await 相比原来的Promise的优势在于处理 then 链,不必把回调嵌套在then中,只要await即可,如

延迟执行

1
2
3
export function delay(time) {
return new Promise((resolve) => setTimeout(resolve, time));
}

使用

1
2
3
4
import { delay } from "@/utils/delay_utils";
async function test(){
await delay(300)
}