繁体   English   中英

流星同步和异步调用以读取文件

[英]Meteor synchronous and asynchronous call to read a file

我是新来的流星。 我正在使用以下代码来读取存储在服务器上的文件。

客户端

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();
  }
});

这将需要您安装上面链接的Futures软件包,并在包含Meteor.methods()定义的文件中正确设置包含文件。 您可能还会在方法内部研究良好的错误处理。

更新:Future程序包的链接是NPM程序包,您可以在此处阅读有关内容。 上面的链接是大气包装,看起来像旧的包装纸。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM