gpt4 book ai didi

javascript - 无法使我的示例函数异步

转载 作者:太空宇宙 更新时间:2023-11-04 02:39:59 26 4
gpt4 key购买 nike

刚刚开始接触 Js 和 Node。我下面有以下代码片段,其中 libFunction 应该异步工作。是的,你猜对了,它是同步工作的。

“从回调打印”在“从主打印”之前打印。你觉得我哪里搞砸了?谢谢

var exec = require("child_process").exec

function blocking()
{
var start = new Date().getTime();
while(new Date().getTime() < start + 5000);
}

function libFunction(callback)
{
exec(blocking(), callback("print from callback"));
}

function callback(txt)
{
console.log(txt);
}

libFunction(callback);

console.log("print from main");

最佳答案

您应该使用这种类型的代码来进行非阻塞调用。

function libFunction(callback)
{
setTimeout(function(){callback("print from callback");}, 5000);
}

在函数阻塞中,while循环显然阻塞,因此程序在5秒完成之前不执行任何操作。 Node.js 不是多线程的,因此从主等待打印从回调打印到完成。

请注意exec 是异步的假设是错误的,而它启动新线程的假设甚至更错误 - javascript 根本不是多线程的(不包括 Worker)。

另一方面,对 setTimeout 的调用是异步的

关于javascript - 无法使我的示例函数异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17535409/

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