ES6--async函数

async函数:真正意义上解决异步回调问题,以同步流程表达异步操作
本质:Generator语法糖
async function foo(){
await 异步操作;
await 异步操作;
}
特点:
不用向Generator去调用next方法,遇到await等待,当前的异步操作完成就往下执行
返回的总是Promise对象,可以用then方法进行下一步操作
async取代Generator函数的星号*,await取代yield
语义上更明确,使用简单

async function foo(){
        return new Promise(resolve=>{
            // setTimeout(function(){
            //     resolve();
            // },2000);
            setTimeout(resolve,2000);//与上面等价,resolve就是函数
        })
    }
     async function test(){
         console.log("开始执行",new Date().toTimeString());
         await foo();
         console.log("执行完毕",new Date().toTimeString());
     }
     test();
     //async里面的返回值
     function test2(){
         return 'XXX';
     }
     async function asyncPrint(){
        //  let result = await test2();
        let result = await Promise.resolve('promise');
         console.log(result);
     }
     asyncPrint();

应用实例:

 //获取新闻内容
     async function getNews(url){
       
        return new Promise((resolve,reject)=>{
            $.ajax({
                        method:'GET',
                        url,
                        // success:function(data){
                        //     resolve();
                        // },
                        success:data=>resolve(data),
                        // error:function(error){
                        //     reject();
                        // }
                        // error:error=>reject(error)
                        error:error=>resolve(false)
                    });
        });
     }
     async function sendXml(){
        let result = await getNews('address url');
        if(!result){
            alert('暂时没有新的内容');
        }
         await getNews('address url'+result.commentUrl);
     }
     sendXml();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值