超过承诺的渠道。为啥以及如何使用?
Posted
技术标签:
【中文标题】超过承诺的渠道。为啥以及如何使用?【英文标题】:Channels over promisses. Why and how to use?超过承诺的渠道。为什么以及如何使用? 【发布时间】:2019-08-21 05:42:14 【问题描述】:我承认我还没有学习core.async
。 IE。我不知道异步工作的 clojure 方式,但我知道这主要是使用通道。我主要在 clojurescript 中工作,我将开始编写 service worker。
找了this library写promise作为channel,但是感觉不用这个库也没什么大不了的。
那么,在任何情况下我都应该使用通道而不是承诺吗?
有没有使用通道从 Promise 到 core.async
的简单转换?
【问题讨论】:
有人有使用 js 承诺实现的东西和使用渠道实现的相同东西的并排示例吗? 【参考方案1】:如果您查看 core.async 的原始原理,当它比使用另一个线程(例如 future
)具有优势时会变得更加清晰。 ClojureScript 是最大的驱动力之一,因为它是单线程的,没有其他选择。
一些资源:
https://clojure.org/news/2013/06/28/clojure-clore-async-channels https://github.com/clojure/core.async/blob/master/examples/walkthrough.clj https://cognitect.com/videos.html(CLJS core.async 上的 2 个) https://github.com/cognitect/async-webinar https://rigsomelight.com/drafts/clojurescript-core-async-todos.html https://medium.com/@loganpowell/cljs-core-async-101-f6522faf536d【讨论】:
请避免仅链接的答案。最好用链接支持答案,但请在帖子本身中写下这些资源对渠道与承诺的陈述。以上是关于超过承诺的渠道。为啥以及如何使用?的主要内容,如果未能解决你的问题,请参考以下文章