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内部是按照顺序执行的
复制代码

 

posted @   WmW  阅读(153)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示