基于 Fiber 实现 async/await 库 Ascs

码农软件 · 软件分类 · 常用工具包 · 2019-08-16 21:27:12

软件介绍

Ascs == as C#,基于 Fiber 实现的类似于C# 的 async/await 的库,摆脱 callback 的痛苦。

Promise 大家都懂,但是在 JS 这个这么喜欢做轮子的领域里面不做一个好像对不起自己似的。

Ascs 很简单,就 3 个 API:

  • Ascs.env 相当于声明这是一个异步(async)的环境,在这里面 ascs 才有效

  • Ascs.conv 把一个常规的异步回调函数转换为 ascs 的异步函数,让你告别回调(callback必须要是最后一个参数)

  • Ascs.await 执行 ascsFunction 之后会返回一个 task,使用这个函数 ascs.await(task) 可以等待返回并且获取返回值

下面是一个简单的例子:

function delayToDo(a, b, cb) {
  var result = a + b;
  setTimeout(function() {
    cb(result * result);
  }, 1000);
} 

var delayToDoAsync = ascs.conv(delayToDo);

ascs.env(function() {
  // 一般写法 
  delayToDo(1, 2, function(r) {
     console.log(r);
  });
  // ascs写法,等待返回
  var result = ascs.await(delayToDoAsnc(1, 2));
  console.log(result[0]); // 返回的是数组,相当于是回调函数参数
})();

更多例子可以看 demo

常见问题:

  • 浏览器能用吗?

        做的时候没想过浏览器,我又不是前端。想前后端兼容的建议用wind.js啊

  • 和ES6兼容吗?

        可以看看commit的历史,其实曾经想过兼容,但是generator的yield的作用于并不能实现像Lua那种效果,所以还是放弃了。不过由于是基于Fiber实现,基本上node/iojs都可以用。

  • ES7 也有async await,这玩意还有用吗?

        等ES7出来再算吧...ES6都还没全

  • 还有什么要说?

    ascs只是一种尝试,没有什么野心,就是走心,玩玩。另外,相比起实际项目,ascs更加适合用于制作library,可以很方便为你的库提供async/await风格的接口(使用ascs.conv转换一下就好),实际项目改造起来会需要一定工作。

更多请关注 https://github.com/drzunny/ascs

本文地址:https://codercto.com/soft/d/12522.html

算法设计与分析

算法设计与分析

屈婉玲、刘田、张立昂、王捍贫 / 清华大学 / 2011-5 / 25.00元

《算法设计与分析》为计算机科学技术专业核心课程“算法设计与分析”教材.全书以算法设计技术和分析方法为主线来组织各知识单元,主要内容包括基础知识、分治策略、动态规划、贪心法、回溯与分支限界、算法分析与问题的计算复杂度、NP完全性、近似算法、随机算法、处理难解问题的策略等。书中突出对问题本身的分析和求解方法的阐述,从问题建模、算法设计与分析、改进措施等方面给出适当的建议,同时也简要介绍了计算复杂性理论......一起来看看 《算法设计与分析》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码