问题标签 [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 - 节点纤程/未来回调地狱
我尝试在我的 node.js 项目中使用 wait.for.js 库,但无法从查询中获取数据库数据。
这是示例(我们在 Coffeescript 中的数据库类中):
但实际上这不适用于回调过程
然后我使用“Wait.for”并尝试按照数据库示例“ https://github.com/luciotato/waitfor ”但是有一个问题,wait.launchFiber(); 线 ?
所以我尝试了......但没有工作
问题是,有一个类“A”的实例调用方法execute(“Select * from my_table”),而类“B”及其方法“execute(strOrder)”返回一个数组或对象结果。
拜托,任何人都可以帮我找到解决方案吗?
javascript - 如何在流中使用纤维
我正在尝试将纤维与流一起使用:
但它并没有真正起作用。数据回调在回调内部的光纤完成之前完成。所以上面的代码输出:
事实上,它应该更像是:
node.js - 节点的 exec 调用会阻止流星应用程序吗?
我正在构建一个流星应用程序,它使用 phantomjs 从网页创建 pdf 文件。
PhantomJSchild_process.exec
使用Meteor._wrapAsync
. 当我使用像 google.com 这样的任何 url 时,它工作正常并创建了 pdf。
问题是,我想在 /invoicePDF 捕获由同一个流星应用程序服务的站点。但是在执行 phantomjs 的过程中,站点显然没有加载,因此它无法在 phantomjs 内部加载,这使得完成对 phantomjs 的调用是不可能的。
asynchronous - Meteor 不会抛出错误但会崩溃
我想在我的应用程序中实现错误处理,但是当我抛出 Meteor.Error 时,我的服务器崩溃了。这可能是因为我正在使用未来来等待结果。我怎样才能让它运行?
javascript - Node.js 这个 Fiber 已经在运行
我有一个关于在 Node.js 中使用 Fibers 的问题。以下代码失败并显示错误消息:
此 Fiber 已在运行
train
例行公事。
出于某种原因,它不喜欢myseeds
,如果我换成其他东西,它就可以工作myseeds
。train
为什么会这样?
asynchronous - 如何在 Meteor 中使用 wrapAsync
我无法弄清楚如何使用 Meteor 正确使用 wrapAsync。我目前正在使用 node-apac 和亚马逊产品广告 API。
如果我试图运行以下代码,我该如何异步运行它:
我尝试观看多个视频,但遇到了问题
javascript - 从 Meteor.method 中删除 setTimeout
要点:https ://gist.github.com/FA-ViPer/39d6529edf8be6d376a9#file-gistfile1-txt
我不确定如何从下面的代码中删除 setTimeout 函数,并且仍然可以将我的轨道变量插入到集合“Carousel”中。
javascript - 将 Phantom.js 与 Meteor.js 一起使用时出错:Meteor 代码必须始终在 Fiber 中运行
在 Meteor.js 中使用 Phantom.js 和phantom
NPM 包时,我收到一条错误消息,指出Meteor code must always run within a Fiber. Try wrapping callbacks that you pass to non-Meteor libraries with Meteor.bindEnvironment.
我尝试findOne
用Meteor.wrapAsync
Phantom 的回调函数包装函数,Meteor.bindEnvironment
但错误仍然存在。
我们能做什么?
错误:
javascript - 在 Promise 中包装 MongoDB 调用
我一般使用 Meteor (1.0.3),但对于一个特殊情况,我使用原始服务器端路由来呈现文件——所以我不在 Meteor 方法之外。
我也在使用 node fs.writeFile/fs.readFile 和 exec 命令来调用 Linux 命令行实用程序。
我提出这个问题的唯一一点是节点调用当然是异步的。所以我选择使用 node Q 库来管理异步回调。
这一切都有效,直到我添加了一行来调用 MongoDB 数据库。
像这样的调用:
产生以下错误:
[错误:没有光纤就无法等待]
仅当我将函数包装在 Promise 中时才会发生错误。
例如,这样的事情会抛出:
如果我使用 Meteor Fibers 库,我不会收到错误消息:
但是,record_name 变量在光纤之外是未定义的,所以据我所知,我没有办法将变量传递到光纤范围之外。
一个更精确的例子
这有点长,所以你必须向下滚动才能看到所有内容。我基本上在这里建立一个工作流程,所以有流程和子流程。
现在,让我们假设 process_2 函数与 process_1 完全相同
此外,我们应该假设我在每个函数中都有 console.log('step_start') 和 console.log('step_end') 。这是它在命令行上的样子:
- 启动进程
- 结束进程
- 启动进程 1
- 结束进程 1
- 启动进程 2
- 启动子进程 1
- 获得记录 1
- 启动子进程 2
- 获得记录 2
- 返回记录1
- 结束子进程 1
- 在子进程 1 中调用 writeData
- 返回记录2
- 在子进程 2 中调用 writeData
- 结束进程 2
- 结束子进程 1
我必须在 sub_process_1() 函数上放置 Fiber(未来)的原因是,当我将函数 process_1() 放置在 Q 链的顶部时,我得到了错误:没有光纤就无法等待]。
如果我在顶部的 Q 链中删除 process_1() 并从 sub_process_1() 中删除 .future() ,则不会引发异常。
问题
- 为什么在 Promise 中调用 Mongo 集合会导致 Meteor 应用程序中的光纤错误?
- 在同步函数中调用异步函数通常会导致同步函数变为异步函数吗?
- 我该如何解决这个问题?
meteor - 为什么 insert() 会在 Meteor 方法中破坏 wrapAsync 的 child_process.spawn() 处理程序?
我正在尝试child_process.spawn()
在 Meteor 方法中使用。我想从外部进程捕获 PID、stdout、stderr 和退出代码,并将所有这些存储在数据库中。
一切正常,直到我添加了第一个insert()
电话。这样insert()
,只有一个“虚拟”文档被插入到数据库中。我在服务器控制台中没有收到错误消息。如果我先注释掉insert()
,其他insert()
调用会成功。
第一次insert()
打电话是怎么回事?