客户端在JavaScript中实现光纤。

时间:2012-12-25 01:10:13

标签: javascript meteor coroutine fibers node-fibers

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

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

  2. 是否与Chrome以外的其他浏览器兼容?

  3. 如果有人能指出我对光纤的纯JS实现,或者解释它们是如何工作的(他们有自己的事件循环吗?),我将非常感激。

    任何指向工作客户端光纤实现的github项目的链接也将受到赞赏!

    毕竟是XMAS:)

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

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

(并非所有人都庆祝圣诞节,但如果你这样做,那就是最好的祝福)

答案 2 :(得分:0)

尝试使用JSCEX(Windjs

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

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

答案 3 :(得分:0)

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

我还没有通过查看源代码来验证我刚刚说过的所有内容,但我无法想象它的工作原理会有什么不同。

修改

还没有深入研究源代码,但是this section of the Meteor's guide似乎与我的想法一致。