问题标签 [node-fibers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 在服务器上调用 Collection.insert 时,“流星代码必须始终在 Fiber 内运行”
我在 server/statusboard.js 中有以下代码;
基本上,它从 JSON 提要中提取一些数据并尝试将其推送到集合中。
当我启动 Meteor 时,出现以下异常;
我不太确定那个错误是什么意思。有没有人有任何想法,或者可以提出不同的方法?
javascript - 节点光纤是否阻塞?
如果你在 Node.js 中运行一个 I/O 密集型任务,比如一些异步数据库操作,使用node-fibers,它会阻塞吗?
我还没有使用节点光纤 b/c 似乎——如果在处理 HTTP 请求的代码中使用,其中运行了一些长的正常非阻塞 I/O 代码——它现在会阻止其他请求访问您的应用程序。这是真的还是假的?关于为什么它是真/假的一些细节也会非常有帮助。
windows - 使用 node.js 安装光纤时找不到模块 build.js
我对 Node 非常陌生,我决定尝试/开始使用它是 Meteor 框架。我首先将它安装在 OSX 上,一切正常。但我希望它可以在另一台使用 Windows 的机器上工作。
我使用了一个似乎可以很好地安装 Node 和 Meteor 的 MSI 包。它们安装在我的“D:”上的 %HOMEDRIVE% 上(我认为这不重要,但谁知道......),所有东西都在 D:\Meteor 中。
我创建了一个新应用程序,启动它但出现错误......后来我发现问题出在纤维上,人们通常 npm 卸载它并再次 npm 安装它,然后它就可以工作了。好吧,这就是我的问题所在:安装根本不起作用。所以这是我尝试安装光纤时得到的结果:
我尝试安装不同的打包并且它有效。我对纤维只有这个问题。知道如何调试吗?我不知道去哪里找(我什至找不到module.js ...)。非常感谢!
node.js - 带有 pg/postgres 的 node.js 纤维
我一直在试图弄清楚如何使用 node-fibers 使我的数据库代码在 node.js 中不那么混乱,但我无法让它工作。我将代码归结为最小测试用例:
如果我保持原样,我会收到以下错误:
但是,如果我注释掉调用 pconnect 的行,我会在控制台上收到“调用函数”消息并且没有错误。github页面上的示例具有几乎相同的结构,并且它在我的系统上确实可以正常工作,但是我对我在这里做错了什么感到困惑。
编辑:附加细节
我已经设法让代码以两种不同的方式运行,这些方式似乎不相关,但都有相同的行为。函数完成后,节点挂起,我必须用 ctrl-c 杀死它。以下是我为获得该结果所做的两件事:
1)将 pg.connect 包装在一个匿名函数中,然后用 Future 包装它:
2)这个是一个真正的谜,但它似乎有相同的结果。在光纤内部,我只是在调用 pconnect 之前直接调用 pg.connect,一切似乎都解决了。
我可以想象一种情况,例如,如果 pg.connect 函数有其他可选参数以某种方式干扰 Future.wrap 调用的预期布局,那么 (1) 将是有意义的。另一种可能性是对象超出范围,并且在实际调用 pconnect 时未定义“this”引用。我不知道为什么(2)有任何影响。
编辑:部分答案
好的,所以我至少回答了部分问题。我对对象范围的想法被证明是正确的,并且通过使用 bind() 函数,我能够消除额外的回调包装层:
但由于未知原因,它仍然在执行结束时挂起。
node.js - 为什么meteor.js是同步的?
代码不会因为同步而降低效率吗?为什么同步编码是一种胜利?我在做一些研究时发现了这两个链接:http://bjouhier.wordpress.com/2012/03/11/fibers-and-threads-in-node-js-what-for/,https : //github.com /Sage/streamlinejs/
如果目标是防止意大利面条式代码,那么显然您可以使用异步代码,例如 streamline.js,这不是回调金字塔,对吗?
node.js - nodejs 纤维对我不起作用
result
填充在函数exec
中,但它永远不会回到主线程......我做错了什么?
javascript - 具有多个参数的节点纤程/未来回调
期货如何处理具有多个参数的回调?这对于我可以用于期货的几乎所有用途都至关重要。github 示例显示它只处理一个参数。
Github 自述文件中的示例是
但是 mysql 调用之类的东西呢
我如何使用期货方法获得这三个( err
、、results
和) ?fields
wait()
编辑
实验告诉我,回调的第一个参数,在这种情况下err
,总是被视为错误,如果值是真实的,就会被抛出。第二个参数被赋值。尽我所能忽略任何进一步的论点。
imagemagick - 流星js中的imagemagick(借助流星路由器和光纤)
我无法在meteorjs 中使用imagemagick。我正在开发一个小型 svg->png 转换器,其中包含一个用于提供转换后的图像的 rest api。我用meteor-router实现了其余的api。imagemagick 转换有效。但是,我无法将转换结果写入 http 响应。我试图通过使用光纤来消除异步性来解决这个问题。但这仍然行不通。基本上,所有 request.write 调用在 yield 执行后都会被忽略。这是我的代码:
我对meteorjs很陌生。因此,我可能会完全错误地使用 Fiber。或者我根本不应该使用纤维。有人可以帮忙吗?
javascript - JavaScript 中光纤的客户端实现。
AFAIK meteorjs 使用node-fibers,但他们的 github 页面声明它仅是服务器端和 v8(或者不是?)。
meteorjs 是如何在客户端实现非阻塞、同步的api 的 ?
它是否与chrome以外的其他浏览器兼容?
如果有人能给我指出纤维的纯 JS 实现,或者解释它们是如何工作的(他们有自己的事件循环吗?),我将不胜感激。
任何指向工作客户端光纤实现的 github 项目的链接也将不胜感激!
毕竟是圣诞节 :)
javascript - 如何使用 Node.js Fibers 运行代码
我有一个关于 Nodejs Fibers 的问题(这对我来说绝对是新的)......我有这个 Nodejs Fibers 教程,http: //bjouhier.wordpress.com/2012/03/11/fibers-and-threads-in- node-js-what-for/,这里有一个例子,它说
现在基于这个示例,我创建了自己的代码版本,如下所示,
但这给了我一个错误,
我还有另一种情况,它将在 1000 毫秒后运行一个带有回调的函数(我这样做是为了在回调之前测试长时间执行的函数),
这里的代码给了我另一个错误,
那么,yield() 是否应该在 run() 函数执行后等待?关于我的 nodejs 代码中发生了什么的任何想法?并提前感谢...