有什么语言支持:多个异步调用方法,按命令式顺序写?

2015-04-18 14:28:18 +08:00
 davidlau
如 f1 ( callback: f2(callback: f3) )

写成
f1()
f2()
f3()
3788 次点击
所在节点    程序员
21 条回复
hooluupog
2015-04-18 14:31:52 +08:00
支持async/await的语言(c#,dart,es7)或者goroutine+chanel都可以。
sumhat
2015-04-18 14:34:50 +08:00
JS 中的 Promise 也可以
Monad
2015-04-18 14:36:57 +08:00
Coroutine就是拿来干这个的嘛…
C/C++用makecontext/swapcontext, lua原生支持coroutine
ChiChou
2015-04-18 15:08:04 +08:00
@sumhat Promise 还是没有 yield 来的直接
ChiChou
2015-04-18 15:08:44 +08:00
@sumhat 好吧我突然明白你是想说 yield 一个 Promise 来着……
mucid
2015-04-18 15:10:14 +08:00
python3
yield from
coolicer
2015-04-18 15:13:50 +08:00
node的async库 ,隐
bombless
2015-04-18 17:59:40 +08:00
CPS嘛……

其实加一个能处理 AST 的预处理期就好了,这个任何通用语言都能做。

又或者让代码通过源代码解释执行,或者热加载代码。这些都不需要语言来支持,语言只需要能回调、支持 FFI,剩下的有平台支持就够了。

在带有语法插件/Lisp宏的语言中会更方便。
phoenixlzx
2015-04-18 18:13:00 +08:00
promise/async 都比 yield 好用...
yield 那货比 callback 还反人类...
h4x3rotab
2015-04-18 20:43:27 +08:00
C# async
billzhuang
2015-04-18 22:00:41 +08:00
所有语言的promise
newtonisaac
2015-04-18 23:06:28 +08:00
JamesRuan
2015-04-18 23:09:47 +08:00
do syntax sugar for Haskell Monad
binux
2015-04-18 23:11:30 +08:00
yield 可以在同一个作用域中干活,省去了参数传递
clino
2015-04-18 23:43:07 +08:00
gevent AsyncResult
ffffwh
2015-04-18 23:58:38 +08:00
call/cc
plantain
2015-04-19 07:20:13 +08:00
C++17 await
bolasblack
2015-04-19 10:53:22 +08:00
试试这个? https://github.com/tj/co
futursolo
2015-04-19 14:37:20 +08:00
Node.js: Promise
Python(Tornado based Application): Future(Use with yield)
Go: goroutine
quix
2015-04-19 17:20:20 +08:00
还有一种思路,用future对象, 可以看下ruby的celluloid

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/184550

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX