Generator函数自动执行器

简介: Generator函数自动执行器

有的东西被遗忘,有的东西销声匿迹,有的东西死了,而其中几乎不含有悲剧性因素。——《寻羊冒险记》

今天用typescript写了个Generator函数自动执行器:

export function runGenAuto(fn: Function) {
    let gen: Generator<Function> = fn()
    function next() {
        let result = gen.next()
        if (result.done) {
            return result.value
        }
        return result.value(next)
    }
    return next();
}

为了测试效果,我们定义一个Generator函数,这个函数用于将URLSearchParams转换成一般对象

当然直接遍历不用generator也能实现上述需求,但这里主要是为了测上方的自动执行Generator函数的效果

interface Param {
    [key: string]: any
}
export function* transferToObj(params: URLSearchParams) {
    let result: Param = {};
    for (let [key, value] of params.entries()) {
        yield (next: Function) => next(result[key] = value)
    }
    return result
}

使用时传入对应的Thunk函数即可

let params = runGenAuto(() => transferToObj(new URLSearchParams("q=apple&from=en&to=zh&appid=2015063000000001&salt=1435660288&sign=f89f9594663708c1605f3d736d01d2d4")))
console.log(params)

打印结果:

相关文章
|
1月前
|
JavaScript 前端开发
Generator 函数的执行流程是怎样的?
【10月更文挑战第30天】Generator函数的执行流程通过 `next()` 方法的调用实现暂停和恢复执行,结合 `yield` 关键字以及参数传递和错误处理机制,提供了一种灵活而强大的编程模式,可用于处理异步操作、数据生成与迭代等多种复杂的编程任务。
|
1月前
|
存储 JavaScript 前端开发
Generator 函数的使用场景有哪些?
【10月更文挑战第30天】Generator函数在JavaScript中提供了一种强大而灵活的编程模式,能够在异步编程、数据处理、状态管理等多个领域发挥重要作用,帮助开发者更高效地解决各种复杂的编程问题,提高代码的可读性和可维护性。
|
5月前
|
Java 数据库连接 mybatis
Mybatis查询传递单个参数和传递多个参数用法
Mybatis查询传递单个参数和传递多个参数用法
83 11
|
5月前
|
存储
向量化代码实践问题之Task<T>类中的on_completed函数是如何工作的
向量化代码实践问题之Task<T>类中的on_completed函数是如何工作的
|
7月前
|
SQL Java 关系型数据库
mybatis-plus启动时自动执行sql脚本
mybatis-plus启动时自动执行sql脚本
166 1
|
存储 Oracle Java
[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法
[亲测可用]hibernate调用Oracle存储过程|Spring Data JPA调用Oracle存储过程方法
|
Python
FastAPI(35)- 依赖项中使用 yield + Context Manager 上下文管理器
FastAPI(35)- 依赖项中使用 yield + Context Manager 上下文管理器
344 0
|
7月前
|
弹性计算 运维 Serverless
基于函数计算搭建的异步任务执行框架
本文介绍基于函数计算实现的异步任务执行框架(编程语言:Python3),把跟阿里云资源开通相关的API封装到一个独立的模块,提供标准的API跟企业内部在用的ITSM或OA进行集成,降低客户对接API门槛,更快上阿里云。
183 0
基于函数计算搭建的异步任务执行框架
|
JavaScript
什么是Generator函数,有何作用
什么是Generator函数,有何作用
153 0
|
机器学习/深度学习 存储 人工智能
TensorFlow 2.0将把Eager Execution变为默认执行模式,你该转向动态计算图了
8 月中旬,谷歌大脑成员 Martin Wicke 在一封公开邮件中宣布,新版本开源框架——TensorFlow 2.0 预览版将在年底之前正式发布。今日,在上海谷歌开发者大会上,机器之心独家了解到一个重大的改变将会把 Eager Execution 变为 TensorFlow 默认的执行模式。这意味着 TensorFlow 如同 PyTorch 那样,由编写静态计算图全面转向了动态计算图。
209 0
TensorFlow 2.0将把Eager Execution变为默认执行模式,你该转向动态计算图了