gpt4 book ai didi

node.js - Nodejs 中的异步函数返回值

转载 作者:太空宇宙 更新时间:2023-11-04 01:14:13 24 4
gpt4 key购买 nike

我有这个功能:

exports.readPartial = function(html, values, response) {
fs.readFile(__dirname + "/../html/partials/" + html, function(error, file) {
if(error) { this.loadError(response, error); }
else {
console.log("\t--> partial found: " + file);
return file; // FILE VALUE
}
});
}

当调用该函数时,它应该返回“file”的值。但是,当调用 return file; 时,我实际上返回了我作为参数传递的匿名函数中的值。使用 NodeJS 进行异步编程时返回此值的正确方法是什么?使用 var that = this;

对这种编程风格感到非常困惑。

最佳答案

您的 readPartial 函数依赖于异步函数 readFile。所以它也是异步的。

现在您有几种解决此问题的选择:

所以,基本上这意味着:两个函数要么必须是异步的,要么都是同步的。

在这两个选项中,我更喜欢异步选项也使用回调:这正是 Node.js 的核心能力 - 异步、非阻塞 I/O。因此,如果您没有充分的理由反对它,请坚持使用异步版本并使用回调。

当然,您可能对存在的其他选项感兴趣。所以,它们在这里(尽管我不会推荐):

  • 调用fs.readFile并“等待”其回调返回。这基本上意味着使用 while(true) 循环进行主动等待,并且绝对被认为是不好的做法。无论如何,技术上是可行的。对于您确实想要这样做的罕见情况,或者您只是对如何实现类似的事情感兴趣,请查看 syncasync.js .

关于node.js - Nodejs 中的异步函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12554350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com