作家
登录

浅谈JavaScript中的异步处理

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

  •             resolve(res) 
  •         }, 1000) 
  •     }) 
  • 我们预先设定一个场景,假设我们要请求三次办事器,每一次的请求依附上一次请求的结不雅,如下:

    then 办法返回一个新的 Promise 对象, then 办法的链式调用避免了 CallBack 回调地狱

    营业代码如下

    1. async function getData(){ 
    2.     var res1 = await getDataAsync('/page/1?param=123'
    3.     console.log(res1) 
    4.     var res2 = await getDataAsync(`/page/2?param=${res1.data}`) 
    5.     console.log(res2) 
    6.     var res3 = await getDataAsync(`/page/2?param=${res2.data}`) 
    7.     console.log(res3) 

    比较 Promise 感到怎么样?是不是异常清楚,然则 async/await 是基于 Promise 的,因为应用 async 润饰的办法最终返回一个 Promise , 实际上, async/await 可以看做是应用 Generator 函数处理异步的语法糖,我们来看看若何应用 Generator 函数处理异步

    五、Generator

    起首异步函数依然是

    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.     }) 

    应用 Generator 函数可以如许写

    1. function*getData(){ 
    2.     var res1 = yield getDataAsync('/page/1?param=123'
    3.     console.log(res1) 
    4.     var res2 = yield getDataAsync(`/page/2?param=${res1.data}`) 
    5.     console.log(res2) 
    6.     var res3 = yield getDataAsync(`/page/2?param=${res2.data}`) 
    7.     console.log(res3)) 

    然后我们如许慢慢履行

    1. var g = getData() 
    2. g.next().value.then(res1=> { 
    3.     g.next(res1).value.then(res2=> { 
    4.         g.next(res2).value.then(()=> { 
    5.             g.next() 
    6.         }) 
    7.     }) 
    8. }) 

    膳绫擎的代码,我们慢慢调用遍历器的 next() 办法,因为每一个 next() 办法返回值的 value 属性为一个 Promise 对象


      推荐阅读

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

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


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

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

    关键词: 探索发现

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

    网友点评
    自媒体专栏

    评论

    热度

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