Javascript NodeJs-事件循环是否仅处理I/O请求?
通常情况下,事件循环是否仅用于IO?到底什么是IO作业? 例如,假设一个请求进入NodeJs,NodeJs然后向API发出一个出站http请求,以获取一些数据,同时不阻塞用户 这是一个IO作业吗?NodeJs将如何处理它?如果我不希望http请求,而是希望异步进行冗长的计算,然后向用户返回一个值,该怎么办?尽管受到CPU的限制,这是否也由事件循环处理 通常情况下,事件循环是否仅用于IO 我不会将计时器(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
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)代码>