• node.js async/await 继发执行与并发执行


    async/await 继发执行与并发执行,看如何控制

    两个异步函数 foo bar

    function foo() {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                console.log('foo:' + new Date().toLocaleString())
                resolve('foo')
            }, 2000)
        })
    }
    
    function bar() {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                console.log('bar:' + new Date().toLocaleString())
                resolve('bar')
            }, 2000)
        })
    }

    继发执行

    //继发执行
    async function main() {
        console.log('beginTime:' + new Date().toLocaleString())
        var foostr = await foo();
        console.log(new Date().toLocaleString())
        console.log(foostr);
        var barstr = await bar();
        console.log(new Date().toLocaleString())
        console.log(barstr);
        console.log('endTime:' + new Date().toLocaleString())
    }
    
    
    //继发执行
    async function main2() {
        let docs = [foo, bar];
        console.log('beginTime:' + new Date().toLocaleString())
        for (let doc of docs) {
            var str = await doc();
            console.log(new Date().toLocaleString())
            console.log(str);
        }
        console.log('endTime:' + new Date().toLocaleString())
    }

    并发执行

    //并发执行 
    async function async_main() {
        console.log('beginTime:' + new Date().toLocaleString())
        let [get_foo, get_bar] = await Promise.all([foo(), bar()]);
        console.log(new Date().toLocaleString());
        console.log(get_foo);
        console.log(get_bar);
        console.log('endTime:' + new Date().toLocaleString())
    }
    
    
    //并发执行 
    async function async_main4() {
        let docs = [foo(), bar()];
        console.log('beginTime:' + new Date().toLocaleString())
        for (let doc of docs) {
            var str = await doc;
            console.log(new Date().toLocaleString())
            console.log(str);
        }
        console.log('endTime:' + new Date().toLocaleString())
    
    }
    
    
    //并发执行
    async function async_main2() {
        console.log('beginTime:' + new Date().toLocaleString())
        let fooPromise = foo();
        let barPromise = bar();
        let get_foo = await fooPromise;
        console.log(new Date().toLocaleString());
        console.log(get_foo);
        let get_bar = await barPromise;
        console.log(new Date().toLocaleString());
        console.log(get_bar);
        console.log('endTime:' + new Date().toLocaleString())
    }
    
    //并发执行 但是 会先执行 endTime
    async function async_main3() {
        let docs = [foo, bar];
        console.log('beginTime:' + new Date().toLocaleString())
        docs.forEach(async (val) => {
            var str = await val();
            console.log(new Date().toLocaleString())
            console.log(str);
        })
        console.log('endTime:' + new Date().toLocaleString())
    }
  • 相关阅读:
    535. Encode and Decode TinyURL 长短URL
    190. Reverse Bits 二进制相反数
    476. Number Complement 二进制中的相反对应数
    598. Range Addition II 矩阵的范围叠加
    507. Perfect Number 因数求和
    asp.net core 系列之用户认证(1)-给项目添加 Identity
    asp.net core 系列之用户认证(authentication)
    asp.net core 系列之webapi集成Dapper的简单操作教程
    asp.net core 系列之webapi集成EFCore的简单操作教程
    asp.net core 系列之中间件基础篇(middleware)
  • 原文地址:https://www.cnblogs.com/xbblogs/p/8946912.html
Copyright © 2020-2023  润新知