3.async函数详解——ES6异步编程

复制代码
//async函数的基本语法
function getData(code){
    return new Promise((resolve,reject)=>{
        setTimeout(()=>{
            console.log(code);
        },1000)
    })
}

//async函数定义
/*
    async函数的await的返回值一定是一个promise对象
    async函数必须在前一个await的promise进入resolve状态的时候才会执行下一个await,自动往下执行
    async函数调用了以后,自动执行
*/
async function sedAjax(){
    //这里的返回值,就是上面resolve里传来的参数
    const res = await console.log('first');
    console.log(res);

    await console.log('second');
    await console.log('third');
    await console.log('fourth');
}
sedAjax();
复制代码

eg.先获取商品详情,在获取商品评论

复制代码
function getData(url){
    $.get(url,data=>{
        console.log(data);
        getData(`http://localhoset:3000${data.commentsUrl}`);
    },'json')
}

getData("http://localhoset:3000/goos_detail?id=2")


用async函数

function getData(url){
    
    return new Promise((resolve,reject)=>{
        $.get(url,data=>{
            console.log(data);
            resolve(`http://localhoset:3000${data.commentsUrl}`);
            //reject("未找到商品评论")
        },'json')
    });
}

async function getGoods(url){
    const commentsUrl = await getData("http://localhoset:3000/goos_detail?id=2");
    await getData(commentsUrl);
}

getGoods()
复制代码

跟Generator函数的比较
1.await调用的函数必须返回的是Promise对象
2.async函数语法语义更加明确,async,await语义更准确;
3.async函数有内部的自动执行器,不用通过next来执行下一步请求

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