【发布时间】:2017-10-21 23:14:17
【问题描述】:
我正在尝试返回我的方法的stdout,但在客户端我总是有undefined,尽管服务器说它是带有内容的string。
我这样做:
'getExistingFiles': function () {
var list = "";
return new Promise(Meteor.bindEnvironment(function(resolve) {
child = exec_tool("ls -al",
function (error, stdout, stderr) {
if (error !== null) {
console.error('exec error: ' + error);
list = "error: " + error;
resolve(list);
return list;
}else{
list = stdout;
console.log(typeof list);
console.log("LIST:------------");
console.log(list);
resolve(list);
return list;
}
});
}));
}
但在客户端上,当我尝试访问它的值时,它是undefined:
Meteor.call("getExistingFiles",function(list){
console.log(list);
console.log(typeof list);
});
所以我的问题是,我如何将这个list 发送给客户?
[编辑] 我试过这样来测试是不是我的客户错了,但不是我认为是在服务器上
//server
var et = Meteor.wrapAsync(exec_tool);
try {
child = et('ls -al');
console.log("LIST:------------");
console.log(child);
console.log(typeof child);
return child;
} catch (err) {
throw new Meteor.Error(err, err.stack);
}
[EDIT2] 即使这样它也会发送undefined WHY ?!
var et = Meteor.wrapAsync(exec_tool);
try {
var proc = exec_tool("ls -al")
proc.stdout.on('data', function (data) {
//do something with data
console.log(data);
list = list + data;
});
proc.stdout.on('end', function() {
console.log("end");
console.log(list);
return list;
});
} catch (err) {
throw new Meteor.Error(err, err.stack);
}
【问题讨论】:
标签: javascript string meteor promise client-server