Ascs 基于 Fiber 实现 async/await 库开源项目

我要开发同款
匿名用户2015年07月21日
72阅读

技术信息

开源地址
https://github.com/hinson0/task-board
授权协议
BSD

作品详情

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

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

Ascs很简单,就3个API:

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

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

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

下面是一个简单的例子:

fuctio delayToDo(a, b, cb) {  var result = a + b;  setTimeout(fuctio() {    cb(result * result);  }, 1000);} var delayToDoAsyc = ascs.cov(delayToDo);ascs.ev(fuctio() {  // 一般写法   delayToDo(1, 2, fuctio(r) {     cosole.log(r);  });  // ascs写法,等待返回  var result = ascs.await(delayToDoAsc(1, 2));  cosole.log(result[0]); // 返回的是数组,相当于是回调函数参数})();

更多例子可以看demo

常见问题:

浏览器能用吗?

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

和ES6兼容吗?

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

ES7也有asycawait,这玩意还有用吗?

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

还有什么要说?

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

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

功能介绍

Ascs == as C#,基于 Fiber 实现的类似于C# 的 async/await 的库,摆脱 callback 的痛苦。 Promise 大家都懂,但是在 JS 这个这么喜欢做轮子的领...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论