如 f1 ( callback: f2(callback: f3) )
写成
f1()
f2()
f3()
写成
f1()
f2()
f3()
|
1
支持async/await的语言(c#,dart,es7)或者goroutine+chanel都可以。
|
|
2
JS 中的 Promise 也可以
|
|
3
Coroutine就是拿来干这个的嘛…
C/C++用makecontext/swapcontext, lua原生支持coroutine |
|
6
python3
yield from |
|
7
node的async库 ,隐
|
|
8
CPS嘛……
其实加一个能处理 AST 的预处理期就好了,这个任何通用语言都能做。 又或者让代码通过源代码解释执行,或者热加载代码。这些都不需要语言来支持,语言只需要能回调、支持 FFI,剩下的有平台支持就够了。 在带有语法插件/Lisp宏的语言中会更方便。 |
|
9
promise/async 都比 yield 好用...
yield 那货比 callback 还反人类... |
|
h4x3rotabApr 18, 2015
10
C# async
|
|
billzhuangApr 18, 2015
11
所有语言的promise
|
|
newtonisaacApr 18, 2015
12
@billzhuang yes
|
|
JamesRuanApr 18, 2015
13
do syntax sugar for Haskell Monad
|
|
14
yield 可以在同一个作用域中干活,省去了参数传递
|
|
clinoApr 18, 2015
15
gevent AsyncResult
|
|
ffffwhApr 18, 2015
16
call/cc
|
|
plantainApr 19, 2015
17
C++17 await
|
|
bolasblackApr 19, 2015
18
试试这个? https://github.com/tj/co
|
|
futursoloApr 19, 2015
19
Node.js: Promise
Python(Tornado based Application): Future(Use with yield) Go: goroutine |
|
quixApr 19, 2015
20
还有一种思路,用future对象, 可以看下ruby的celluloid
|
|
hitsmaxftApr 19, 2015 via iPhone
21
java都行啦,killim在字节码层做下cps变换就行了。
|