gpt4 book ai didi

javascript - 将异步过程转换为同步过程

转载 作者:行者123 更新时间:2023-11-30 12:42:14 26 4
gpt4 key购买 nike

我正在玩 javascript 和 node.js,所以我天真地尝试使异步调用同步(我知道 fs lib 有 readFileSync,这只是为了玩)

这是代码,它执行一个循环,直到回调更改标志值,循环应该中断,流程应该继续,但它挂起...

var fs = require("fs");

//read a file, just something asynchronous
var readfilesync = function(filename){

var getout = false,
result = null,
error = null;

fs.readFile(filename, "utf8", function(err, data){
if (err) {
error = err;
}
else {
result = data;
}
getout = true;
});
while (!getout) {
console.log('---waiting');
}
return (error)? error : result;
};

console.log("========== redis.conf: ",
readfilesync("/var/log/system.log"));

任何人都可以帮我做一个关于这个的讲座吗?问候。

最佳答案

while (!getout) 处于阻塞状态,因此 fs.readFile 的回调永远不会执行并且 getout 永远不会改变。

记住,JS 是单线程的。回调只能在资源可用时执行,但它们永远不会变得可用,因为 while 循环永远不会终止。

也许这有助于更好地理解 JavaScript 的执行模型:MDN - EventLoop .

关于javascript - 将异步过程转换为同步过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24024781/

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