zoukankan      html  css  js  c++  java
  • js Promise async await 学习研究

    通过Promise async await可以实现同步按照顺序执行的效果,具体如下

     function asyncFunc(num) {
            return new Promise((resolve, reject) => {  //将异步函数放到Promise中,成功时resolve,失败时reject
                setTimeout(() => {
                    resolve("timeout_" + num);  //模拟异步函数
                }, num);
            })
        }
        async function test() { //await必须要在async修饰的函数中使用
            var p1 = await asyncFunc(3000);  //asuncFunc返回的是Promise,加上await就会等待,并且返回值变成了Promise的resolve传入的值
            console.log(p1);
            var p2 = await asyncFunc(2000);  //按照顺序调用异步函数,感觉像是排队执行,总共耗时3000+2000+1000=6000毫秒
            console.log(p2);  //这些没有await的操作也是按照顺序的,await是等待的意思,它不执行完貌似就不往下走
            var p3 = await asyncFunc(1000);
            console.log(p3);
            return p1 + " + " + p2 + " + " + p3;  //异步函数能可控的按照顺序执行了,并且能以返回值的形式获取,就很爽
        }
        console.log(111);
        test().then(p => {  //async修饰的函数貌似都会返回Promise,它本身是异步的,所以要用到这个then,有点类似回调函数
            console.log(p); //这里可以获取test的返回值,如果是在aysnc修饰的函数中使用,直接await test()就可以了,但是没有的话,就只能通过then回调了
        });
        console.log(222);  //因为test是异步的,所以222会比p早输出,test内部是按照顺序执行的
  • 相关阅读:
    在django中用MySQL为数据库 新建一个项目的流程
    django ORM中的RelatedManager(关联管理器)
    URL的命名和反向解析
    自定义分页的插件
    从数据库读出数据分页显示
    往数据库批量插入试验数据
    JDK9对集合添加的优化
    全栈工程师
    List的三个子类的特点
    List集合
  • 原文地址:https://www.cnblogs.com/luludongxu/p/13408462.html
Copyright © 2011-2022 走看看