问题标签 [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.

0 投票
1 回答
338 浏览

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)”返回一个数组或对象结果。

拜托,任何人都可以帮我找到解决方案吗?

0 投票
3 回答
665 浏览

javascript - 如何在流中使用纤维

我正在尝试将纤维与流一起使用:

但它并没有真正起作用。数据回调在回调内部的光纤完成之前完成。所以上面的代码输出:

事实上,它应该更像是:

0 投票
1 回答
79 浏览

node.js - 节点的 exec 调用会阻止流星应用程序吗?

我正在构建一个流星应用程序,它使用 phantomjs 从网页创建 pdf 文件。

PhantomJSchild_process.exec使用Meteor._wrapAsync. 当我使用像 google.com 这样的任何 url 时,它工作正常并创建了 pdf。

问题是,我想在 /invoicePDF 捕获由同一个流星应用程序服务的站点。但是在执行 phantomjs 的过程中,站点显然没有加载,因此它无法在 phantomjs 内部加载,这使得完成对 phantomjs 的调用是不可能的。

0 投票
1 回答
262 浏览

asynchronous - Meteor 不会抛出错误但会崩溃

我想在我的应用程序中实现错误处理,但是当我抛出 Meteor.Error 时,我的服务器崩溃了。这可能是因为我正在使用未来来等待结果。我怎样才能让它运行?

0 投票
0 回答
309 浏览

javascript - Node.js 这个 Fiber 已经在运行

我有一个关于在 Node.js 中使用 Fibers 的问题。以下代码失败并显示错误消息:

此 Fiber 已在运行

train例行公事。

出于某种原因,它不喜欢myseeds,如果我换成其他东西,它就可以工作myseedstrain为什么会这样?

0 投票
1 回答
204 浏览

asynchronous - 如何在 Meteor 中使用 wrapAsync

我无法弄清楚如何使用 Meteor 正确使用 wrapAsync。我目前正在使用 node-apac 和亚马逊产品广告 API。

如果我试图运行以下代码,我该如何异步运行它:

我尝试观看多个视频,但遇到了问题

0 投票
0 回答
129 浏览

javascript - 从 Meteor.method 中删除 setTimeout

要点:https ://gist.github.com/FA-ViPer/39d6529edf8be6d376a9#file-gistfile1-txt

我不确定如何从下面的代码中删除 setTimeout 函数,并且仍然可以将我的轨道变量插入到集合“Carousel”中。

0 投票
0 回答
107 浏览

javascript - 将 Phantom.js 与 Meteor.js 一起使用时出错:Meteor 代码必须始终在 Fiber 中运行

在 Meteor.js 中使用 Phantom.js 和phantomNPM 包时,我收到一条错误消息,指出Meteor code must always run within a Fiber. Try wrapping callbacks that you pass to non-Meteor libraries with Meteor.bindEnvironment.

我尝试findOneMeteor.wrapAsyncPhantom 的回调函数包装函数,Meteor.bindEnvironment但错误仍然存​​在。

我们能做什么?

错误:

0 投票
1 回答
1510 浏览

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 应用程序中的光纤错误?
  • 在同步函数中调用异步函数通常会导致同步函数变为异步函数吗?
  • 我该如何解决这个问题?
0 投票
1 回答
141 浏览

meteor - 为什么 insert() 会在 Meteor 方法中破坏 wrapAsync 的 child_process.spawn() 处理程序?

我正在尝试child_process.spawn()在 Meteor 方法中使用。我想从外部进程捕获 PID、stdout、stderr 和退出代码,并将所有这些存储在数据库中。

一切正常,直到我添加了第一个insert()电话。这样insert(),只有一个“虚拟”文档被插入到数据库中。我在服务器控制台中没有收到错误消息。如果我先注释掉insert(),其他insert()调用会成功。

第一次insert()打电话是怎么回事?

这是一个演示该问题的 Meteor 应用程序