Mr.Async中$await支持switch、property赋值
Mr.Async更新支持在switch,和property赋值语句中的$await等待语句,而且目前来说不打算支持try-catch-finally,因为还没有找到比较好的实现方式,麻烦如果哪位大虾知道怎样捕获异步异常的方式或者模型,多多赐教。
switch的case中使用
var i = 0, ret; switch(i){ case 0 : console.log('waiting for 1 second.'); $await(delay()); ret = 1; console.log('done.'); default : console.log('waiting for 1 second.'); $await(delay()); ret = 2; console.log('done'); break; case 1 : console.log('waiting for 1 second.'); $await(delay()); ret = 3; console.log('done'); break; } console.log(ret); // output // waiting for 1 second. // done. // waiting for 1 second. // done. // 2 |
我挑选了switch testcase中一个特殊的例子,default块在中间,第一个case没有break并且匹配到变量i的值0。虽然在每个case里面都含有等待的$await,但是最终的console.log输出是在switch块执行完成之后才输出了,并且得到正确的值。
property(属性方式)赋值
之前只实现了var a = $await(delay()); 和 var a; a = $await(delay());方式的$await赋值语句,现在就支持属性赋值。如下:
var obj = { inner : {} }; // 等待delay操作,返回值为1 obj.inner.a = $await(delay()); console.log(obj.inner.a); // output // 1 |
以上加上的新功能都已经更新了testcase,可能还不足够,bug常常有,让它来得更加猛烈些吧。Mr.Async托管地址:https://github.com/winsonwq/Mr.Async
NEXT
下一步打算着手于基于NodeJS的AOT编译器,一步一步来。
Comments