学习 Generator 和 Promise,这才是未来
nodejs吧
全部回复
仅看楼主
level 8
前面有人说 什么异步模型完爆nodejs...
现在node探索出一种合理的异步方式,就是 Generator 与 Promise
例如代码
var content = yield request一个url
想想完爆node的C# 的 async/await 模型是怎么做的,
var content = await xxxAsync 是吧
xxxAsync返回的是 Task<TResult>, 等task完成后把值赋给左边的content,控制顺序是 线程池在协调
那么node的也可以遵循这种方式,我们的Promise就跟 Task地位相同,这个generator 则是用来控制流程, yield 一个Promise,这个Promise代表着一个操作会产生一个值,那么我generator就控制着你Promise 完成后,把值赋给左边的content....
设计的很精巧,写起来也很爽, 经常手痒,上面那个就是手痒的结果 ...
2015年01月14日 10点01分 1
level 8
generator可以yield 任何值 , 那么 co的使命就是
把yield 的任意值变成一个Promise,等Promise fulfill后,继续调用,不能promisify 就抛出错误...
2015年01月14日 10点01分 2
level 3
用global不好吧
2015年01月16日 00点01分 3
写个脚本玩玩,不要在意...
2015年01月16日 01点01分
level 9
promise这种早就有了,jQuery1.7好像就支持链式异步的写法了
2015年01月17日 08点01分 4
我的意思是 promise 和 generator 一起用, yield 一个 Promise, 跟C# 里面的 await 一个Task 是一样的, 但一个Promise,一个then 一个then,一点都不好玩,那样还不如直接回调
2015年01月17日 11点01分
回复
��ID�ѱ�����ע
:C#没写过,一直then下去我感觉挺好的啊。直接回调写成金字塔才是灾难
2015年01月17日 12点01分
回复
ϴͷ_�ý���
: 前一阵还因为callback hell,想换语言试试 ,之前看过 co这种 , 看过 suspend , 不喜欢,就一直用着Async , 但看到co用Promise重写,学学Promise , 与 co 一起用 , 太爽了 ! 呢吗 这就是node 的未来啊,绝对是~
2015年01月17日 15点01分
level 9
和callback一样会传染,搞不好弄出一大堆async方法……
2015年02月04日 16点02分 5
会传染? 你的意思是出现一堆Async结尾的方法是吧 那么我告诉你,全部都是Async那就爽了,还不用Promisify 了
2015年02月06日 00点02分
回复
��ID�ѱ�����ע
:实际上还是非阻塞的,即使全部方法都编译成async方法也不可能避免promise的,除非加个语法糖, async方法实际上和生成器一样,内部是状态机实现的,每次await的函数的promise完成的时候都要重入一遍,如果所有方法都是async的性能岂不是很低
2015年02月06日 02点02分
@707031672 就node,promiseify 得到的 Async方法就是简单的封装一个Promise,流程控制是generator实现的
2015年02月06日 12点02分
level 1
我觉得异步就像是goto语句,早晚被填坑。
2015年02月11日 14点02分 6
it's node's future.
2015年02月12日 02点02分
level 1
楼主用的什么编辑器?
2015年02月15日 11点02分 7
sublime text
2015年02月20日 02点02分
回复 此ID已被我抢注 :配色是哪个啊?
2015年02月20日 03点02分
回复
��Marisa
:nice blue soda ? 貌似
2015年02月22日 04点02分
level 5
你不知道promise的进阶版就是async await么?。。。最新nodejs可以打开这个模式。
2015年02月27日 01点02分 8
不是,Promise只是跟Task<TResult> 对应,跟async/await 毛关系。 之前可以await 一个Task,然后node 可以yield 一个Promise。so async/await 只跟 GeneratorFunction/yield 对应。
2015年02月28日 11点02分
1