作家
登录

浅谈JavaScript中的异步处理

作者: 来源: 2017-08-28 16:58:07 阅读 我要评论

  1. jQuery.unsubscribe("done", f2); 

可以看到应用 async\await 就像写同步代码一样

这种办法的性质与”事宜监听”类似,然则明显优于后者。因为我们可以经由过程查看”消息中间”,懂得存在若干旌旗灯号、每个旌旗灯号有若干订阅┞愤,大年夜而监控法度榜样的运行。

Promise 是异步编程的一种解决筹划,比传统的解决筹划——回调函数和事宜——更合理和更强大年夜

所谓 Promise ,简单说就是一个容器,琅绫擎保存着某个将来才会停止的事宜(平日是一个异步操作)的结不雅。大年夜语法上说, Promise 是一个对象,大年夜它可以获取异步操作的消息。 Promise 供给同一的 API ,各类异步操作都可以用同样的办法进行处理

简单说,它的思惟是,每一个异步义务返回一个 Promise 对象,该对象有一个 then 办法,许可指定回调函数。

如今我们应用 Promise 从新实现膳绫擎的案例,起首,我们要把异步请求数据的办法封装成 Promise

  1. function getDataAsync(url){ 
  2.     return new Promise((resolve, reject) => { 
  3.         setTimeout(()=> { 
  4.             var res = { 
  5.                 url: url, 
  6.                 data: Math.random() 
  7.             } 
  8.             resolve(res) 
  9.         }, 1000) 
  10.     }) 

那么请求的代码应当如许写

  1. getDataAsync('/page/1?param=123'
  2.     .then(res1=> { 
  3.         console.log(res1) 
  4.         return getDataAsync(`/page/2?param=${res1.data}`) 
  5.     }) 
  6.     .then(res2=> { 
  7.         console.log(res2) 
  8.         return getDataAsync(`/page/3?param=${res2.data}`) 
  9.     }) 
  10.     .then(res3=> { 
  11.         console.log(res3) 
  12.     }) 

但也并不是完美,比如我们要添加很多 then 语句, 每一个 then 照样要写一个回调。

如不雅场景再复杂一点,比如河畔的每一个请求依附前面所有请求的结不雅,而不仅仅依附上一次请求的结不雅,那会更复杂。 为了做的更好, async/await 就应运而生了,来看看应用 async/await 要若何实现

四、async/await

getDataAsync 办法不变,如下

  1.  function getDataAsync(url){ 
  2.     return new Promise((resolve, reject) => { 
  3.         setTimeout(()=> { 
  4.             var res = { 
  5.                 url: url, 
  6.                 data: Math.random() 
  7.             } 

      推荐阅读

      物联网时代如何管理上百万设备?找风河DLM就对了!

    Victor告诉记者,在设备全部治理周期中,安然是最特别的一环,它不仅仅是贯穿全部周期,更重要的是,它必须在>>>详细阅读


    本文标题:浅谈JavaScript中的异步处理

    地址:http://www.17bianji.com/lsqh/36972.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)