【问题标题】:Client Side Implementation of Fibers in JavaScript.JavaScript 中光纤的客户端实现。
【发布时间】:2012-12-11 04:55:36
【问题描述】:

AFAIK meteorjs 使用node-fibers,但他们的 github 页面声明它仅是服务器端和 v8(或者不是?)。

  1. meteorjs如何实现非阻塞,同步类 api 客户端?

  2. 是否兼容除chrome以外的其他浏览器?

如果有人能指出纯 JS 实现的 Fiber,或者解释它们是如何工作的(它们有自己的事件循环吗?),我将不胜感激。

任何指向工作客户端光纤实现的 github 项目的链接也将不胜感激!

毕竟是圣诞节 :)

【问题讨论】:

  • 这是一个很好的问题。实际上我什至没有意识到它是这样的。

标签: javascript meteor coroutine fibers node-fibers


【解决方案1】:

node-fibers 项目是 Node.js 的 Windows-only 服务器端扩展,用 C++ 实现。您可能永远不会在网络浏览器中看到它。

【讨论】:

  • 确实如此,但是meteor如何在客户端实现光纤呢?
  • @g00fy 它没有。我认为您可能误解了文档中的某些内容。
  • @g00fy 可能是他们对“网络工作者”做了一些事情,但在我看来,这与线程/纤维一点也不相似。
【解决方案2】:

JavaScript 是单线程的。如果要实现非阻塞 I/O,则必须实现节点式消息循环和异步 I/O 库。默认情况下,所有客户端 I/O 都是同步的,尽管 Meteor 和其他库提供回调。

是的,Meteor 的客户端实现可以跨 Chrome 以外的多个浏览器运行。

【讨论】:

【解决方案3】:

试试 JSCEX (Windjs)

Wind.js 是一个高级库,它使我们能够使用纯 JavaScript 控制流进行异步编程(以及更多),而无需额外的预编译步骤。

它适用于服务器端和客户端。

【讨论】:

【解决方案4】:

我相信在服务器端,一切都与 Meteor 完全同步,这要归功于 MiniMongo。因此不需要异步回调,或者更准确地说,Meteor 不需要等待来自服务器的update 回调继续执行下一条指令,这要感谢 MiniMongo 同步响应。

我还没有通过查看源代码来验证我刚才所说的所有内容,但我无法想象它会如何以不同的方式工作。

编辑

还没有深入研究源代码,但this section of the Meteor's guide 似乎朝着我想的方向发展。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 2017-06-02
    • 2019-01-03
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 2010-12-19
    相关资源
    最近更新 更多