【发布时间】:2015-07-30 18:10:01
【问题描述】:
我使用以下代码,但代码没有进入 if 语句
function getContent(key) {
var filePath = path.join(__dirname, '../test.txt');
fs.readFile(filePath, 'utf8', function (err, data) {
if (err) {
return console.log(err);
}
....
var fileKeyValObj = {};
return fileKeyValObj[key];
});
}
我能够通过调试访问上一个方法的返回,并且它工作正常... 这里的函数没有到达 if
getContent('web', function (cmd) {
if (typeof cmd !== 'undefined') {
这里的关键是我发送的网页,我看到 getContent 的返回值是正确的。
我看到了这篇文章,但我认为我做了同样的事情,我在这里错过了什么吗? How do I return the response from an asynchronous call?
顺便说一句,在这种情况下,建议使用 promise??? 像蓝鸟
【问题讨论】:
-
从异步回调返回数据不是你想要的。这只是返回到文件系统代码的内部,而不是返回到您的任何代码。您不能尝试使异步操作突然同步。你就是不能。
getContent()需要返回一个 Promise 或接受一个回调,您可以在结果可用时调用。
标签: javascript asynchronous callback promise bluebird