美文网首页
async与await的缺点以及解决

async与await的缺点以及解决

作者: An的杂货铺 | 来源:发表于2021-05-26 16:06 被阅读0次

    Async/await 让代码看起来是同步的,在某种程度上,也使得它的行为更加地同步。
    await 关键字会阻塞其后的代码,直到promise完成,就像执行同步操作一样。它确实可
    以允许其他任务在此期间继续运行,但自己的代码被阻塞 ---MDN async和await章节
    参考如下实例

    function timePromise(time) {
        return new Promise((resolve, reject) => {
            setTimeout(function() {
                resolve();
            }, time);
        });
    }
    async function test() {
        await timePromise(3000);
        await timePromise(3000);
        await timePromise(3000);
    }
    let startTime = Date.now();
    test().then(() => {
        let finishTime = Date.now();
        let useTime = finishTime - startTime;
        console.log('test用时' + useTime);
    }); //test用时9002
    
    //通过以下方式来改善
    async function test1() {
        let timePromise1 = timePromise(3000);
        let timePromise2 = timePromise(3000);
        let timePromise3 = timePromise(3000);
        await timePromise1;
        await timePromise2;
        await timePromise3;
    }
    /*在这里,我们将三个Promise对象存储在变量中,这样可以同时启动它们关联的进程。
    接下来,我们等待他们的结果 - 因为promise都在基本上同时开始处理,promise将同
    时完成;当运行第二个示例时,您将看到弹出框报告总运行时间仅超过3秒!
    */
    test1().then(() => {
        let finishTime = Date.now();
        let useTime = finishTime - startTime;
        console.log('test1用时' + useTime);
    }); //test1用时3004
    

    在这里,我们将三个Promise对象存储在变量中,这样可以同时启动它们关联的进程。
    接下来,我们等待他们的结果 - 因为promise都在基本上同时开始处理,promise将同
    时完成;当运行第二个示例时,您将看到弹出框报告总运行时间仅超过3秒!

    相关文章

      网友评论

          本文标题:async与await的缺点以及解决

          本文链接:https://www.haomeiwen.com/subject/dfiksltx.html