async和await的使用

解决问题:可以把异步变成同步等待的操作

使用要求:

1.async和await是配套使用的,await必须写在async函数的内部
2.async是定义在函数function前面,返回一个Promise对象
3.await只能处理Promise对象的异步等待(别的setTimeout,load等造成的异步不能被处理,如果这些异步也想要被处理成同步等待,只能放在Promise里面)
4. 函数中使用return返回的内容可以通过then来获取

使用示例:

 function getImage(src) {       //返回Promise对象
        return new Promise(function (resolve, reject) {
          var img1 = new Image();
          img1.src = src;
          img1.onload = function () {  
            resolve(img1);
          };
        });
      }
        async function loadImages(){  //async也返回Promise对象
            var arr=[];
            for(var i=3;i<30;i++){
               await getImage("./img/"+i+"-.jpg").then(function(img){
                    arr.push(img);
        })
      return arr;
}
  var p=loadImages();   //函数中使用return返回的内容可以通过then来获取
        p.then(function(arr){
            console.log(arr);
  })

setTimeout等异步的同步等待

var arr=[];
for(var i=0;i<30;i++){
    await new Promise(function(resolve,reject){
     setTimeout(function(){  //必须放在Promise中
         resolve(i);
     },1000);
 }).then(function(n){
   arr.push(n);
   })
 } 
  console.log(arr);
}
posted on 2020-08-04 14:17  94Lucky  阅读(820)  评论(0编辑  收藏  举报