【发布时间】:2015-08-15 05:00:29
【问题描述】:
我已经阅读了很多关于回调的内容,但仍然不明白......
我正在执行一个异步函数,它向数组中添加一个包含可用磁盘空间信息的字符串。
所有这些代码都在一个脚本中,我希望能够在其他人中使用该数组。到目前为止,我试图返回它并将其作为参数传递......但它在完成任务之前执行。
var diskspace = require('diskspace');
var fs = require('fs');
var aux;
function getDiskSpace(json){
diskspace.check('C',function(err, total, free, status){
aux=new Object();
aux.name="diskspace";
aux.value=(((total-free)/(1024^3)).toFixed(2)+"MB used, "+(free*100/total).toFixed(2)+"% free");
json.push(aux);
});
aux= new Object();
aux.name="date";
aux.value=(new Date().toLocaleString());
json.push(aux);
aux= new Object();
aux.name="arduinos";
aux.value=JSON.parse(fs.readFileSync("./data/dirs.json","utf8"));
json.push(aux);
}
module.exports=getDiskSpace;
在主程序中,我像 JSON 一样发送它:
var array=new Array();
var getDiskSpace=require('./getIndexInfo.js');
getDiskSpace(array);
res.writeHead(200,{"Content-Type": "application/json"});
res.end(JSON.stringify(array));
你能告诉我这样做的正确方法吗? 我知道这已经被讨论了很多,但我什至也读过关于 promises 的内容,而且我读的越多我就越困惑,对不起。
【问题讨论】:
-
哇,骗人问题的标题太接近了,让我觉得 OP 懒得看。
-
我已经检查了所有这些问题,但我仍然无法得到答案。 @Adam 你的评论让我觉得你没有费心去阅读比标题更进一步的内容。无论如何,第一个答案是解决方案,感谢所有人;)
标签: javascript node.js asynchronous return