流星同步和异步调用读取文件
Meteor synchronous and asynchronous call to read a file
我是Meteor的新手。我使用以下代码读取存储在服务器上的文件。
客户端
Meteor.call('parseFile', (err, res) => {
if (err) {
alert(err);
} else {
Session.set("result0",res[0]);
Session.set("result1",res[1]);
Session.set("result2",res[2]);
}
});
let longitude = Session.get("result0");
let latitude = Session.get("result1");
var buildingData = Session.get("result2");
服务器端
Meteor.methods({
'parseFile'() {
var csv = Assets.getText('buildingData.csv');
var rows = Papa.parse(csv).data;
return rows;
}
})
问题是,当我打电话时,需要时间将结果发送回来,因此无论我使用纬度和经度,它都会给出未定义和分页符。那么,有没有办法避免这个问题呢?一种解决方案是进行同步调用并等待返回结果。
您可以使用futures包使服务器方法同步运行,这将强制客户端等待方法完成。
它可能看起来像这样:
Meteor.methods({
'parseFile'() {
var future = new Future();
var csv = Assets.getText('buildingData.csv');
var rows = Papa.parse(csv).data;
future.return(rows);
future.wait();
}
});
这将需要您安装上面链接的期货包,并在包含Meteor.methods()
定义的文件中正确设置包含。你也可以在你的方法中考虑良好的错误处理。
更新:Future包的链接是一个NPM包,你可以在这里阅读。上面的链接是大气包,它看起来像一个旧的包装器包。
相关文章:
- 使用JS/NodeJS测试并读取文件中的变量
- 当读取文件时,浏览器打开良好,但它是空白浏览器
- 当尝试使用ajax读取文件时,变量返回undefined
- 用一些像jsBin/jsFiddle/codePen这样的工具读取文件
- 在Windows Metro风格的Javascript应用程序中读取文件内容
- 咕噜声.js无法读取文件(错误代码:EISDIR)
- 如何从文件夹中读取文件
- Javascript - 如何读取文件
- 如何从 Duktape 中运行的 JavaScript 代码中读取文件
- 当客户端是服务器时,使用 client-JS 读取文件结构
- 如何从chrome扩展名读取文件
- 为什么“;readFile”;使用比读取文件更多的内存's的内容长度
- 在html中读取文件
- 使用javascript读取文件
- 节点尝试在同步写入完成之前读取文件
- 无法通过FileReader读取文件
- 从php中的本地磁盘读取文件
- 使用Javascript读取文件
- 是否可以使用 javascript 从目录中读取文件
- 通过网络浏览器从 URL javascript 读取文件