浏览器家园

TAG标签|网站导航| 手机访问:m.liulanqi.com

当前位置:首页开发学院网页开发 → 【库】Generator:8行代码优雅解决异步嵌套

【库】Generator:8行代码优雅解决异步嵌套

时间:2023-06-27 13:03:48来源:整理作者:浏览器知识手机版
Generator的核心 “计步功能” 亦可解决异步嵌套的问题,一定情况下的封装可替代Promise
复制代码

Promise的简易实现,可看该篇文章

【库】Promise的简便实现,15行代码优雅解决异步嵌套


一、核心函数的定义

function *AJAX (opt) {
  for (let i = 0; i < opt.length; i++) {
    let {
      url, data, success
    } = opt[i]
    yield API[url](data, success)
  }
}
复制代码

也是先传参注册,不过因为Generator 自带闭包,所以代码量非常简洁实用


二、调用阶段(Demo代码全贴)

<!DOCTYPE HTML>
<html>
<head>
  <meta charset="utf-8">
</head>
<body></body>
<script>
  /* 核心函数封装 */
  function *AJAX (opt) {
    for (let i = 0; i < opt.length; i++) {
      let {
        url, data, success
      } = opt[i]
      yield API[url](data, success)
    }
  }
  /* AJAX API config 封装 */
  const API = {
    '/m/zzg/getList' (data, call) {
      setTimeout(() => {
        call({
          data: 'ajax1返回的数据'
        })
      }, 1000)
    },
    '/m/zzg/getUser' (data, call) {
      setTimeout(() => {
        call({
          data: 'ajax2返回的数据'
        })
      }, 2000)
    },
    '/m/zzg/saveUser' (data, call) {
      setTimeout(() => {
        call({
          data: 'ajax3返回的数据'
        })
      }, 1000)
    }
  }
  /* 外部调用需要嵌套的AJAX API */
  const Generator = AJAX([{
    url: '/m/zzg/getList',
    data: {},
    success: res => {
      console.log(res.data)
      Generator.next()
    }
  }, {
    url: '/m/zzg/getUser',
    data: {},
    success: res => {
      console.log(res.data)
      Generator.next()
    }
  }, {
    url: '/m/zzg/saveUser',
    data: {},
    success: res => {
      console.log(res.data)
    }
  }])
  Generator.next() // 执行
</script>
</html>

复制代码

以下是返回的结果

Generator 回调数据

这里就达到了嵌套的目的,并且代码上没有难看的阶梯状结构。


关于

make:o︻そ╆OVE▅▅▅▆▇◤(清一色天空)

blog:http://blog.csdn.net/mcky_love

掘金:https://juejin.im/user/59fbe6c66fb9a045186a159a/posts


结束语

Generator也好,模拟Promise的实现也好,优势在于可读性以及扩展性,你说为啥不直接用Promise?不好意思,用不惯╭(╯^╰)╮。

相关文章

  • 迅雷关闭监测浏览器功能,迅雷关闭监测浏览器功能,用户上网更隐私

    问题引入随着互联网的普及,越来越多的人开始使用迅雷下载工具来获取资源。然而,很多用户并不知道,在使用迅雷下载时,它会默认开启监测浏览器功能,记录用户的浏览历史,这对用户的隐私构成了一定威胁。2.迅雷监测浏览器功能的危害通过开启监测浏览器功能,迅雷可以记录用户的浏览历史,并向广告商出售数据,让他们精准地投放广告。这意味着用户的个人隐私会被泄露,而且还会受到不必要的广告骚扰,影响用户的上网体验。3.如何关闭迅雷监测浏览器功能?关闭迅雷监测浏览器功能非常简单,只需要在迅雷软件中进行一些设置即可。首先,打开迅..
  • 谷歌浏览器版官方下载,谷歌浏览器官方下载 for PCMacLinux

    谷歌浏览器官方下载forPC/Mac/Linux1.为什么要使用谷歌浏览器?谷歌浏览器是由谷歌公司开发的一款免费的网页浏览器,它支持多种操作系统,包括Windows、Mac和Linux系统。相较于其他浏览器,它具有更快的加载速度、更加稳定的性能、更好的安全性以及丰富的扩展程序。此外,谷歌浏览器还与Google账号紧密结合,能够实现更加智能化、便捷化的服务。2.如何下载谷歌浏览器?你可以通过以下几种方式下载谷歌浏览器:1.访问谷歌浏览器官方网站,点击“下载Chrome”按钮,即可下载最新版本的谷歌浏览器。2..

Copyright 2019-2029 www.liulanqi.com 【浏览器家园】 版权所有

浏览器家园_下载浏览器就到浏览器家园 | 专注MAC浏览器和Windows浏览器下载和使用介绍

声明: 所有软件和文章收集整理来自互联网 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助和广告