ocSteps

JavaScript异步执行辅助工具
授权协议 MIT
开发语言 JavaScript
所属分类 Web应用开发、 网页开发工具
软件类型 开源软件
地区 国产
投 递 者 孔逸春
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

ocSteps 是一个JavaScript异步执行辅助工具,主要用于支持 Node.js 中的大量异步API以及操作,以及前端浏览器里的异步任务(例如Ajax)。如果你听说过“回调地狱”这个词,那么,__ocSteps__ 的用途就很好解释了:它尝试定义“回调天堂”。

ocSteps 维护一个动态的任务链,任务链上的每个节点都是一个可执行函数,这些函数称为 step ,ocSteps 会依次执行任务链上的每个 step 。任务链是动态的,可以在执行过程中向任务链添加 step ,这是 ocSteps 和其他流行的异步操作库的主要区别(例如 StepAsync.js):不是提供各种规则来定义执行顺序,而是在任务链的执行过程中逐步定义任务链。

根据我最近的Node.js开发经验,静态地定义任务链结构,实际上会制造许多繁琐的编码工作;而动态地“演进”任务链,更吻合我们在思考业务逻辑时的思路,这让开发编码更加流畅,并且明显减少编码工作。

ocSteps 参考了 Step 的设计,但是规则还要更简单(ocSteps包括注释和疏散的空行在内也只有200+行代码);并且 ocSteps 是为复杂、动态的任务链而设计。

安装

$ npm i ocsteps

测试

$ npm i -d
$ make test

快速开始

var Steps = require("ocsteps") ; // 和 Step 的用法很像 Steps( // 前一个函数的 return, 作为下一个函数的参数 function(){ var i = 1 ; console.log('step ',i) ; return ++i ; } , function(i){ console.log('step ',i) ; return ++i ; } , function(i){ console.log('step ',i) ; return ++i ; } ) ;

输出的结果是:

step 1
step 2
step 3
 相关资料
  • 1: ASR语言模型在线训练工具 2: TTS在线语音合成工具

  • 异步注解@Async,默认情况下是不生效的,需要的话可以启用. 该加载器有一个可选参数,线程池大小,默认是32,详情可以查阅org.nutz.aop.interceptor.async.AsyncAopIocLoader @IocBy( args={"*json","ioc/", "*anno","net.wendal.nutzbook", "*a

  • Node 库以多种方式处理异步功能。最常见的模式是 error-first callbacks,但是你还可能会遇到 streams、promises、event emitters、child processes, 或 observables。gulp 任务(task)规范化了所有这些类型的异步功能。 任务(task)完成通知 当从任务(task)中返回 stream、promise、event e

  • 由于 Go 标准库的强大支持,Go 可以很容易的进行 Web 开发。为此,Go 标准库专门提供了 httptest 包专门用于进行 http Web 开发测试。 本节我们通过一个社区帖子的增删改查的例子来学习该包。 简单的 Web 应用 我们首先构建一个简单的 Web 应用。 为了简单起见,数据保存在内存,并且没有考虑并发问题。 // 保存 Topic,没有考虑并发问题 var TopicCach

  • 我正在尝试实现一个永久的工作流,它从阻塞直到消息被传递的活动开始(即Redis的)。一旦完成,我想异步启动一个新的工作流来进行某种处理并立即返回。 我尝试使用子工作流启动处理工作流。我观察到,我的父工作流在子工作流执行之前完成。除非我处理返回的未来,但我真的不想这样做。 正确的方法是什么?是否可以在工作流中启动新的常规工作流?此类操作是作为工作流的一部分还是在活动中实现? 提前谢谢你!

  • 问题内容: 我正在尝试使用以下代码执行Redis的几种异步方法 所有方法成功执行 但是我得到了错误 该方法被执行并返回true,它可能将其解释为true,但是我不明白为什么它必须使用该方法应用于它? 我可以通过将一个函数(err,结果)作为最后一个元素添加到client.hincrby中来获得增量的结果。但是,如何在end函数的result变量中获得所有结果呢? 问题答案: 我想您使用的async

  • 这是在一次Android采访中被问到的。有人问我是否可以从异步任务 1 的 doInBackground() 方法(让它成为 Task1)启动另一个异步任务(让它成为 Task2)。我浏览了文档,其中说了以下内容: 必须在UI线程上创建任务实例。 必须在 UI 线程上调用 execute(Params...)。 根据这些陈述,我认为从另一个任务的后台方法启动一个任务是不可能的。此外,async任务

  • 在Server程序中如果需要执行很耗时的操作,比如一个聊天服务器发送广播,Web服务器中发送邮件。如果直接去执行这些函数就会阻塞当前进程,导致服务器响应变慢。 Swoole提供了异步任务处理的功能,可以投递一个异步任务到TaskWorker进程池中执行,不影响当前请求的处理速度。 程序代码 基于第一个TCP服务器,只需要增加onTask和onFinish 2个事件回调函数即可。另外需要设置task