![]() | 1 hooluupog 2015-04-18 14:31:52 +08:00 ![]() 支持async/await的语言(c#,dart,es7)或者goroutine+chanel都可以。 |
2 sumhat 2015-04-18 14:34:50 +08:00 via iPhone ![]() JS 中的 Promise 也可以 |
![]() | 3 Monad 2015-04-18 14:36:57 +08:00 ![]() Coroutine就是拿来干这个的嘛… C/C++用makecontext/swapcontext, lua原生支持coroutine |
![]() | 6 mucid 2015-04-18 15:10:14 +08:00 ![]() python3 yield from |
![]() | 7 coolicer 2015-04-18 15:13:50 +08:00 ![]() node的async库 ,隐 |
![]() | 8 bombless 2015-04-18 17:59:40 +08:00 ![]() CPS嘛…… 其实加一个能处理 AST 的预处理期就好了,这个任何通用语言都能做。 又或者让代码通过源代码解释执行,或者热加载代码。这些都不需要语言来支持,语言只需要能回调、支持 FFI,剩下的有平台支持就够了。 在带有语法插件/Lisp宏的语言中会更方便。 |
![]() | 9 phoenixlzx 2015-04-18 18:13:00 +08:00 ![]() promise/async 都比 yield 好用... yield 那货比 callback 还反人类... |
![]() | 10 h4x3rotab 2015-04-18 20:43:27 +08:00 C# async |
![]() | 11 billzhuang 2015-04-18 22:00:41 +08:00 所有语言的promise |
12 newtonisaac 2015-04-18 23:06:28 +08:00 @billzhuang yes |
![]() | 13 JamesRuan 2015-04-18 23:09:47 +08:00 do syntax sugar for Haskell Monad |
![]() | 14 binux 2015-04-18 23:11:30 +08:00 via Android ![]() yield 可以在同一个作用域中干活,省去了参数传递 |
![]() | 15 clino 2015-04-18 23:43:07 +08:00 gevent AsyncResult |
![]() | 16 ffffwh 2015-04-18 23:58:38 +08:00 call/cc |
![]() | 17 plantain 2015-04-19 07:20:13 +08:00 C++17 await |
![]() | 18 bolasblack 2015-04-19 10:53:22 +08:00 试试这个? https://github.com/tj/co |
20 quix 2015-04-19 17:20:20 +08:00 还有一种思路,用future对象, 可以看下ruby的celluloid |
![]() | 21 hitsmaxft 2015-04-19 19:14:59 +08:00 via iPhone java都行啦,killim在字节码层做下cps变换就行了。 |