zoukankan      html  css  js  c++  java
  • 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())
    }
  • 相关阅读:
    java--io流之转换流
    java--IO流之字节流、字符流
    java--递归
    java--IO流之File类
    java --JDBC
    2018-09-15JDBC事务详解1
    2018-09-10JSP内容和标签的查看权限+9个内置对象
    2018-09-12DBUtils工具包+DBCP连接池
    2018-09-08Cookie的发送和Cookie的读取+Session基本原理
    参考博客:URI和URL的区别
  • 原文地址:https://www.cnblogs.com/xbblogs/p/8946912.html
Copyright © 2011-2022 走看看