zoukankan      html  css  js  c++  java
  • 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来执行下一步请求

  • 相关阅读:
    Django修改数据库时出错 django.db.utils.OperationalError: (1091, "Can't DROP 'content'; check that column/key exists")
    ini配置文件必知
    常用的两个批处理
    windows Path变量优先级
    curl开源库编译
    VS属性页的目录类型
    连通域去噪
    C++调用V8与JS交互
    VS2010,Qt插件安装使用
    utf8转gbk,libcurl中文乱码处理
  • 原文地址:https://www.cnblogs.com/lisa2544/p/15665773.html
Copyright © 2011-2022 走看看