【发布时间】:2017-09-03 16:42:03
【问题描述】:
我正在学习 node.js,但遇到了问题。如何从函数中获取数据到变量?
function loadOrInitializeTaskArray(file, cb) {
fs.exists(file, function(exists) {
var tasks = [];
if (exists) {
fs.readFile(file, 'utf8', function(err, data) {
if (err) throw err;
var data = data.toString();
var tasks = JSON.parse(data || '[]');
cb(tasks);
})
} else {
cb([]);
}
})
}
function listTasks(file) {
loadOrInitializeTaskArray(file, function(tasks) {
for (var i in tasks) {
console.log(tasks[i]);
}
})
}
函数 listTasks 工作正常,但我想创建自己的函数,例如 customListTasks:
function customListTasks(file) {
var list = loadOrInitializeTaskArray(file, function(){});
console.log(list);
}
这不会返回错误,但列表中的 console.log 会返回“未定义”。我怎样才能把这些数据放到变量列表中?
【问题讨论】:
-
使用 Bluebird 协程函数并使用它可以产生 Promise
-
您不能期望同步获得异步结果。您必须异步获取它(回调、承诺)。
标签: javascript node.js