es7 fetch解决异步嵌套问题

fetch API解决异步嵌套问题

咱们昨天学习了async和await,知道他是为了解决浏览器异步获取的的!可是咱们用fetch api的话方法会更加的简单html

async和await解决异步嵌套

function ajax(url){

          return new Promise(function(reslove,reject){
              let xmlHttp=new XMLHttpRequest();
              xmlHttp.open("get",url,true);
              xmlHttp.onreadystatechange=function(){
                  if(xmlHttp.readyState==4&&xmlHttp.status==200){
                      let data=JSON.parse(xmlHttp.responseText);
                      reslove(data);
                  }
              }
              xmlHttp.send(null);
          })
      }
      let uldom=document.getElementById("students");
      let url="http://192.168.0.57:8000/students.json";
      async function main(){
        let data=await ajax(url);
      
        let students=data;
        let html="";
        for(let i=0,l=students.length;i<l;i++){
            let name=students[i].name;
            let age=students[i].age;
            html+=`
            <li>姓名${name},年龄${age}</li>
            `
        }
        uldom.innerHTML=html;
      }
      main();

咱们须要建立Promise函数来进行操做,若是咱们用fetch解决的话,会更加的方便!ajax

let uldom=document.getElementById("students");
      let url="http://192.168.0.57:8000/students.json";
        function main(){
            fetch(url).then(respone=>{
            return respone.json();
        }).then(data=>{
            let students=data;
            let html="";
            for(let i=0,l=students.length;i<l;i++){
                let name=students[i].name;
                let age=students[i].age;
                html+=`
                <li>姓名${name},年龄${age}</li>
                `
            }
            uldom.innerHTML=html;
        });
            
        }
        main();

不用建立Promise,直接调用then()是否是比上边更加的简单!json

async、await结合fetch处理异步

let uldom=document.getElementById("students");
    let url="http://192.168.0.57:8000/students.json";  
    async function main(){
        let respone = await fetch(url);
        let student = await respone.json();
        let html="";
        for (let i=0,l=students.length;i<l;i++){
            let name=students[i].name;
            let age=students[i].age;
            html+=`
            <li>姓名${name},年龄${age}</li>
            `
        }
        uldom.innerHTML=html;
        }
    main()

感受是否是很简单!比上一种方法更加的简单。api

相关文章
相关标签/搜索