zoukankan      html  css  js  c++  java
  • js 新语法 async await的使用

    随着es6的更新与普及新的语法又在es7、es8中推广与更进一步;

    es5的同步处理请求的方式:

    server.getUser().then((res) => {
    					
    	if (res.status == 'success') {
    		console.log('请求成功')
        		getAddress(res.model.id) //成功后再继续发下一个请求	
    	} else {
                  console.log('请求失败')
            }
    })
    
    function getAddress(userid){
         server.getAddress({id:userid}).then((res) => {
    					
    	if (res.status == 'success') {
    		console.log('请求成功')
        		//处理逻辑		
    	} else {
                  console.log('请求失败')
            }
      })
    }
    

      点评:此处至少有两个问题

                  1.代码没有加异常处理,如果接口返回失败或代码质量报错,会造成代码阻塞卡死应用;

                  2.嵌套发请求太落后已不适应当前前端的发展,造成可读性差;

         修改一下用es6 的async awiat

      

    try{
        let user =awiat getUser();
        if(user){
             let address = awiat getAddress(user.id)
             //处理逻辑
        }
    }catch(e){
        console.error(e)
    }
    //...省略代码   上面两个方法报错不会阻塞后面代码的执行
    
    //封装两个请求方法
    async function getUser(){
         let data = '';
         return new Promise(async (resolve, reject) => {
              try{ //加异常处理
                    data =await server.getUser();
                    if(data.status=='success'){
                        return resolve(data)
                    }else{
                       return resolve('')
                    }
              }catch(e){
                   reject(e)
              }
        })
    }    
    
    async function getAddress(id){
         let data = '';
         return new Promise(async (resolve, reject) => {
              try{ //加异常处理
                    data =await server.getAddress({id:id});
                    if(data.status=='success'){
                        return resolve(data)
                    }else{
                       return resolve('')
                    }
              }catch(e){
                   reject(e)
              }
        })
    } 
    

      

      

  • 相关阅读:
    6、加法算术
    5、找出最大和最小的数
    4、计算并输出圆的面积和周长
    2、函数y=f(x)
    1、两数的平方和
    单片机中断寄存器知识点总结
    创建PCB原理图的模板
    电机知识
    结合实例谈谈航拍全景的方法和技巧
    航拍技巧
  • 原文地址:https://www.cnblogs.com/suzhen-2012/p/10105557.html
Copyright © 2011-2022 走看看