我是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;
}
})
问题是我打电话时需要时间将结果发回去,因此无论我在哪里使用纬度和经度,都会给出未定义和分页符。那么,是否有任何解决方案可以避免这个问题。其中一个解决方案是进行同步调用并等待返回结果。
答案 0 :(得分:0)
您可以使用futures package同步运行服务器方法,这会强制客户端等待方法完成。
它可能看起来像这样:
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包,您可以阅读here。上面的链接是大气包,它看起来像一个旧的包装包。