async/await的应用场景


个人理解,async/await的应用场景主要是为了解决异步多层回调嵌套的问题,举例如下:

function sleep(time) {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            console.log(`sleep ${time}s`);
            resolve(time);
        }, time);
    });
}

// 目标:等待几秒后再执行下一个log,下一个log依赖上一个sleep返回的值
// 解决办法:1. promise.then  2. async/await

console.log("start");
// 1. promose.then
sleep(1000).then((res1) => {
    console.log(res1 + "log1"); // 1秒后打印 1000log1
    sleep(2000).then((res2) => {
        console.log(res2 + "log2"); // 2秒后打印 1000log1
    });
// 多层回调,如果每个异步函数都依赖上个异步函数返回的结果,且有多个,写起来将层层嵌套 });
// 2. async/await async function run() { const a = await sleep(1000); console.log(a + "log1"); // 1秒后打印 1000log1 const b = await sleep(2000); console.log(b + "log2"); // 2秒后打印 1000log1 } run();