web前端:解决异步的几种实现方式

    作者:海常7号更新于: 2020-04-07 22:06:46

    Web开发

      异步双方不需要共同的时钟,也就是接收方不知道发送方什么时候发送,所以在发送的信息中就要有提示接收方开始接收的信息,如开始位,同时在结束时有停止位。

      解决异步的几种实现方式

      如下代码

      constrequest=function(){

       letnum=Math.round(Math.random()*100)/100;

       console.log(num);

      setTimeout(function(){

       if(num<0.5){

       return('1234567');

       }else{

       return('abcdefg');

       }

       },500)

      }

      console.log(request())

      //输出:0.31

      //undefined

      setTimeout为异步函数,所以第二个返回值就打印为了undefined,因为不会等待计时器函数执行完成再执行外层的console.log(request())。

      1、promisethen

      //解决方法一:promisethen

      constrequest=function(){

       var_this=this;

       letnum=Math.round(Math.random()*100)/100;

       console.log(num);

       returnnewPromise((resolve,reject)=>{

       setTimeout(function(){

       num<0.5?resolve('1234567'):reject('abcdefg');

       },500);

       });

      }

      request().then(val=>{

       console.log(val);

      }).catch(err=>{

       console.log(err);

      });

      2、回调函数

      constrequest=function(cb){

       letnum=Math.round(Math.random()*100)/100;

       console.log(num);

      setTimeout(function(){

       num<0.5?cb('1234567'):cb('abcdefg');

       },500)

      }

      varresult=request(function(res){

       console.log(res);

      })

      3、asyncawait

      constrequest=asyncfunction(){

       letnum=Math.round(Math.random()*100)/100;

       console.log(num);

      constresult=awaitaa(num);

      }

      functionaa(num){

       setTimeout(function(){

       console.log(num<0.5?'1234567':'abcdefg');

       },500)

      }

      request();

      异步的另外一种含义是计算机多线程的异步处理。与同步处理相对,异步处理不用阻塞当前线程来等待处理完成,而是允许后续操作,直至其它线程将处理完成,并回调通知此线程。

课课家教育

未登录