Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJs-事件循环是否仅处理I/O请求?_Javascript_Node.js_Asynchronous_Event Loop - Fatal编程技术网

Javascript NodeJs-事件循环是否仅处理I/O请求?

Javascript NodeJs-事件循环是否仅处理I/O请求?,javascript,node.js,asynchronous,event-loop,Javascript,Node.js,Asynchronous,Event Loop,通常情况下,事件循环是否仅用于IO?到底什么是IO作业? 例如,假设一个请求进入NodeJs,NodeJs然后向API发出一个出站http请求,以获取一些数据,同时不阻塞用户 这是一个IO作业吗?NodeJs将如何处理它?如果我不希望http请求,而是希望异步进行冗长的计算,然后向用户返回一个值,该怎么办?尽管受到CPU的限制,这是否也由事件循环处理 通常情况下,事件循环是否仅用于IO 我不会将计时器(setTimeout,setInterval)和sheduling(setimemadiate

通常情况下,事件循环是否仅用于IO?到底什么是IO作业? 例如,假设一个请求进入NodeJs,NodeJs然后向API发出一个出站http请求,以获取一些数据,同时不阻塞用户

这是一个IO作业吗?NodeJs将如何处理它?如果我不希望http请求,而是希望异步进行冗长的计算,然后向用户返回一个值,该怎么办?尽管受到CPU的限制,这是否也由事件循环处理

通常情况下,事件循环是否仅用于IO

我不会将计时器(
setTimeout
setInterval
)和sheduling(
setimemadiate
process.nextTick
)计算为IO,但通常可以说事件循环中的事件来自外部

到底什么是IO作业

这取决于你所谈论的环境。每个程序都由用户获得特定的输入并生成特定的输出。例如,在终端中,输入是按键,输出是显示的内容。当谈到nodejs IO时,通常指的是网络/文件操作,或者更一般地说:代码不是用js编写的

例如,假设一个请求进入NodeJs,NodeJs然后向API发出一个出站http请求,以获取一些数据,同时不阻塞用户

这是一个IO作业吗?NodeJs将如何处理它

Nodejs将生成一个发出请求的后台线程,同时主进程继续处理其他内容(继续处理事件队列上的其他事件)。然后,如果异步请求完成,后台进程将结果推送到事件队列上,事件循环将从那里将其拉出来并执行回调等

如果我不希望http请求,而是希望异步进行冗长的计算,然后向用户返回一个值,该怎么办

您必须在nodejs中生成另一个线程,否则冗长的计算是同步的

尽管受到CPU的限制,这是否也由事件循环处理


所有内容都会在某个时间落在事件循环上,所有内容都会在CPU上执行…

官方指南对此进行了详细的描述,这里还有一篇很棒的文章,可以帮助您更好地掌握这个概念。是否存在事件循环可能阻塞且无法处理请求的场景?@microwth是,如果一个事件需要很长时间才能处理,例如
while(true)