Future.wait() 不能在没有纤程的情况下等待(在 Meteor.method 中等待另一个 future 时)

2023-11-27

In Meteor,我正在编写一个方法,该方法必须检查某个路径的子目录中是否有新文件。 我首先想列出其中的子目录Meteor之后我child_process.exec一个简单的 bash 脚本,列出自上次执行以来添加的文件。

我在使目录发现异步时遇到一些问题(Error: Can't wait without a fiber)。我写了一个同步版本,但两者都有fs.readdir and fs.stat而不是他们的同步替代方案让我能够捕获错误。

这是代码:

function listDirs(dir, isDir){

    var future1 = new Future();fs.readdir(dir, function(err, files){

            if (err)
                throw new Meteor.error(500, "Error listing files", err);

            var dirs = _.map(files, function(file){

                var future2 = new Future();
                var resolve2 = future2.resolver();

                fs.stat(dir+file, function(err, stats){

                    if (err)
                        throw new Meteor.error(500, "Error statting files", err);

                    if (stats.isDirectory() == isDir && file.charAt(0) !== '.')
                        resolve2(err, file);

                });

                return future2;

            });

            Future.wait(dirs);

            //var result = _.invoke(dirs, 'get');

            future1['return'](_.compact(dirs));
        });

        return future1.wait();
    }

错误Error: Can't wait without a fiber跟。。有关的future2。 当我评论出来的时候Future.wait(dirs)服务器不再崩溃,但这就是我试图解决这个问题的程度。 :/

Another _.map我在该方法的另一部分中使用的函数与 future 配合得很好。 (也可以看看https://gist.github.com/possibilities/3443021我在那里找到了灵感)


将您的回调包装到Meteor.bindEnvironment, 例子:

fs.readdir(dir, Meteor.bindEnvironment(function (err, res) {
    if (err) future.throw(err);
    future.return(res);
}, function (err) { console.log("couldn't wrap the callback"); });

Meteor.bindEnvironment做了很多事情,其中​​之一就是确保回调在 Fiber 中运行。

另一件可能有帮助的事情是var funcSync = Meteor._wrapAsync(func)它利用 futures 并允许使用同步风格调用函数(但它仍然是异步的)。

如果您想了解更多信息,请观看这​​些视频:https://www.eventedmind.com/posts/meteor-dynamic-scoping-with-environment-variables https://www.eventedmind.com/posts/meteor-what-is-meteor-bindenvironment

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Future.wait() 不能在没有纤程的情况下等待(在 Meteor.method 中等待另一个 future 时) 的相关文章

  • Meteor:将所有用户发布到客户端

    为什么这不起作用 在客户端和服务器上 AllUsers new Meteor Collection allUsers 仅在服务器上 Meteor publish allUsers function return Meteor users f
  • 了解新的 mongo id 并将其与 Iron-router 一起使用

    我有一个简单的帖子路线来寻找帖子 id 问题是pathFor助手创建这样的路径 ObjectID 52e16453431fc2fba4b6d6a8 我猜 mongoDB 插入已更改 现在 id对象在其内部包含另一个对象 称为 str 这是我
  • 流星内存不足

    我正在使用流星来制作报废引擎 我必须执行一个 HTTP GET 请求 这会向我发送一个 xml 但这个 xml 大于 400 ko 我得到一个异常 内存不足 result Meteor http get http SomeUrl com 致
  • 为什么我的带有帐户包的 Meteor 应用程序没有发送验证电子邮件?

    我正在制作一个流星应用程序 并且添加了 mrt 帐户密码包以及 mrt 帐户 ui bootstrap dropdown 我添加了登录按钮 以便用户可以创建一个帐户 效果很好 我正在使用所有默认值 在服务器上我有代码 Accounts co
  • Meteor JS:存储特定模板实例状态的最佳方法是什么?

    我正在学习 Meteor JS 中的会话和反应式数据源 它们非常适合设置全局 UI 状态 但是 我不知道如何将它们的范围限制到模板的特定实例 这就是我想做的 我的页面上有多个可内容编辑的元素 每个下面都有一个 编辑 按钮 当用户单击 编辑
  • 如何将 CSV 文件中的数据导入到服务器端的 Meteor 集合中

    我正在尝试为我之前的帖子找到解决方案 Mongo 在 Meteor 应用程序中的 id 字段上给出重复键错误 https stackoverflow com questions 28961281 mongo gives duplicate
  • 如何杀死 Java Future?

    我正在开发的服务使用 Future 来并行运行多个任务 每个任务最多可能需要一分钟才能完成 然而 外部库似乎有问题 因为在某些情况下 2 的时间 它不会返回 在这些情况下 我想给出 2 分钟的等待时间 如果还没有返回 我想杀死 future
  • 将 mongo 数组转换为具有键值对的对象

    我有一个包含字符串数组的 mongo 文档 我需要将这个特定的字符串数组转换为包含键值对的对象数组 以下是我目前的做法 id ObjectId 57e3720836e36f63695a2ef2 platform A1 available C
  • 在 Meteor.method 中调用函数返回未定义

    过去几天我一直在尝试从 Meteor 方法获取返回对象 每次我这样做我都会得到undefined在客户端上 Meteor methods CORSTest function let url www theverge com 2017 4 1
  • Rust 期货中的“then”、“and_then”和“or_else”有什么区别?

    我正在学习使用 Rust future 我发现它非常令人困惑 我觉得我很蠢 但什么时候才能then and then and or else使用 预期返回什么类型 请提供一些您希望看到的不同情况的示例 TL DR then当你想做某事而不管
  • Meteor账号-密码+账号-输入及密码确认

    我在帐户输入包和帐户密码包中都没有看到任何允许在帐户输入的注册表单中使用密码确认字段的选项 我错过了什么吗 不 它的包上没有验证密码字段 您需要自己使用简单的 JS 创建 if password validationPassword Met
  • 为什么我的调试器在视觉上停止在错误的行?

    我在用 email protected cdn cgi l email protection email protected cdn cgi l email protection email protected cdn cgi l emai
  • MongoDB:如何在更新之前对查询进行排序

    我正在编写一个 Meteor Node js 应用程序 它在后端使用 MongoDB 在我的代码中的某个时刻 我需要更新specific集合中的文档 我需要使用 Mongo 的 update 方法 但我在传递正确的 复杂的 查询以缩小到该特
  • 在 Meteor 中重绘模板期间加载消息

    我构建了我的第一个 Meteor 应用程序 我喜欢它 不过 现在它已经有了真实的生产数据 所以速度有点慢 我收到报告称 当我点击此按钮时没有任何反应 有什么方法可以在模板重绘期间显示加载消息 以便用户知道正在发生什么事情 为了进一步说明 请
  • 使用 DataTables (Meteor Tabular) 在新行中绘制数组的每个元素

    我正在使用流星表格包 https atmospherejs com aldeed tabular aldeed tabular它实现了数据表 http datatables net 我正在尝试从 Mongo 集合创建一个表 该集合有一份以下
  • Windows 8.1 上的 Meteor 构建错误

    我已经在 Windows 8 1 64 位上安装了 Meteor 以继续开发现有的 Meteor 应用程序 但是 我无法启动它 Problem 我运行 meteor run 它启动代理 MongoDB 选择包 在最后一步 构建应用程序 之后
  • 处理流星中的长服务器端计算

    我正在使用 jimp https www npmjs com package jimp https www npmjs com package jimp 在meteor JS中生成图像服务器端 换句话说 我正在使用递归算法 计算 图像的像素
  • 我可以订阅 Meteor Session 来获取反应式模板渲染更新吗?

    有没有办法订阅 Meteor Session 对象 以便在 Session 对象上设置数据时自动呈现反应式模板视图 特别是键 名称和值数据 我有一个与迭代时渲染 Meteor Session 对象数据相关的类似问题 这个问题的目的是特别不同
  • Meteor 的不同数据库和前端

    假设我想在 Meteor 的后端使用与 Mongo 不同的数据库 并且还想在前端使用像 D3 js 这样的可视化库 目前可能吗 如果不自己添加的话 会有多复杂 谢谢 https github com meteor meteor tree m
  • Meteor 中的子域支持(如 slack - http://team.slack.com)

    流星中的子域支持 就像 slack http team slack com http team slack com 就像在 Slack 中一样 我的应用程序用户可以创建自己的子域 唯一 并且根据子域应该加载数据 并且围绕此应用程序将继续进行

随机推荐

  • 如何使用beautiful soup和python获取favicon

    我写了一些愚蠢的代码只是为了学习 但它不适用于任何网站 这是代码 import urllib2 re from BeautifulSoup import BeautifulSoup as Soup class Founder def Fin
  • 通过SDK获取iPhone WiFi信息

    有没有办法使用iPhone SDK获取WiFi信息 信号强度 WiFi 频道和 SSID 等是我要寻找的主要内容 只对 Wifi 信息感兴趣 对蜂窝信息不感兴趣 根据this从 iOS 4 1 开始这实际上是可能的 该函数称为 CNCopy
  • 使用 C# 关闭打开的文件

    我遇到过一种情况 人们连接到共享上的文件 并且它阻止我覆盖该文件 我正在尝试编写一个方法 该方法将查看我提供的文件路径当前是否以这种方式锁定并关闭该资源的网络会话 我查看了 ADSI Winnt 提供程序 但 Resources Remov
  • 如何将参数传递给DbContext.Database.ExecuteSqlCommand方法?

    假设我有在实体框架中直接执行 sql 命令的有效需求 我无法弄清楚如何在 sql 语句中使用参数 以下示例 不是我的真实示例 不起作用 var firstName John var id 12 var sql Update User SET
  • 使用 matplotlib fill_ Between 在两条极曲线之间填充

    我有一种感觉 我会用这个来敲打我的额头 但我正在努力填补这个问题普通内饰两个极函数的r 4 sin 2 and r 2 看来我得到的与我想要的相反 有任何想法吗 import numpy as np import matplotlib py
  • 在 Android 中使用 DownloadManager 从标头获取文件名

    我正在使用 DownloadManager 从 url 下载视频文件 问题是 如果我使用默认文件夹下载文件 我无法在图库中看到视频 另外 如果我尝试使用这种方法 request setDestinationInExternalPublicD
  • 从 Python-Docx 中的单元格中删除段落

    我正在尝试创建一个具有两行标题的表格 该表格对所有样式使用简单的模板格式 两行标题是必需的 因为我在两个主要类别下有相同的标题 看来 在 Word 中处理此问题的唯一方法是 将一个两行表嵌套到主内容表的标题行中 以便文档能够格式化并在页面之
  • 具有行跨度和列跨度的自定义网格视图

    i am trying to implement a grid view which has the Graphical view as follows I have gone through various blogs and S O q
  • 初始化块中的“this”关键字是什么意思? [复制]

    这个问题在这里已经有答案了 这是我的代码 class StaticBlock println initializer block message public StaticBlock String message this message
  • Java中的异常与继承

    假设我们有这个问题 public class Father public void method1 public class Child1 extends Father public void method1 throws Exceptio
  • 替换 contenteditable div 中选定的文本

    我一直在寻找答案 但失败了 是否有跨浏览器解决方案来替换所选文本内容可编辑 div 我只是希望用户突出显示一些文本并将突出显示的文本替换为xxxxx 以下内容将在所有主要浏览器中完成这项工作 function replaceSelected
  • 存储 ENUM 值的 PostgreSQL 数组

    我有一个可以有状态的表 statuses unmoderated nominee finalist winner status db Enum statuses name enum nomination status metadata db
  • 如何使用Web API限制DOS攻击

    我计划使用 MVC4 和 Web APi 开发一个网站 它是一个简单的应用程序 将根据搜索显示客户信息 对于搜索功能 我使用 Ajax get 方法调用 webApi 我知道我应该使用 Post 但考虑这是当前的实现 我的 API 调用是
  • JOIN ON 子句中的 T-SQL Case 语句

    我正在尝试在 a 中构建一个 case if 语句JOIN ON clause LEFT JOIN CTSTRC Statuses ON RIGHT Statuses STRID 3 CTE F61 问题是该列 Statuses STRID
  • PHP dirname 返回符号链接路径

    假设我有一个符号链接 one directory to two directory If I echo dirname dirname FILE 它返回 one directory 最好的退货方式是什么 two directory 用法示例
  • 不使用 nightly 时如何忽略基准测试?

    我有一个包含一些基准测试和测试的文件 想针对稳定版 测试版和夜间版进行测试 然而 要么我不使用基准测试 要么稳定 测试版抱怨 使用 stable beta 时有没有办法隐藏所有基准部分 作为示例 以下代码来自book feature tes
  • 如何在 Windows 上从 pygraphviz 运行 neato

    我正在尝试在 python v 2 7 中使用 pygraphviz 和 networkx 来创建网络映射 我在 stackoverflow 上发现了一个看起来非常有用的脚本 import networkx as nx import num
  • GDB TUI - 输出未对齐

    我在ubuntu上使用gdb 7 7 1 GNU gdb Ubuntu 7 7 1 0ubuntu5 14 04 2 7 7 1 我的终端是 Konsole 2 13 2 我遇到的问题是 当我进入 TUI 模式时 在一两个调试器会话之后 会
  • 设置请求持续时间的全局变量

    我可以为单个请求的长度设置某种全局变量 以便页面的所有控件都可以响应它 而不必将其传递给每个控件吗 例如 如果有人点击我的 MasterPage 上的 保存 按钮 我是否可以设置一些内容 以便我的页面上的每个 UserControl 都可以
  • Future.wait() 不能在没有纤程的情况下等待(在 Meteor.method 中等待另一个 future 时)

    In Meteor 我正在编写一个方法 该方法必须检查某个路径的子目录中是否有新文件 我首先想列出其中的子目录Meteor之后我child process exec一个简单的 bash 脚本 列出自上次执行以来添加的文件 我在使目录发现异步