JS单线程会有异步任务问题

JS是单线程,但是为什么JS单线程会有异步任务?

我们可以把 JS 当作项目经理来看,安排这样的任务:

1. 让 http 员工帮我去请求一个网页,具体的网址已经告知,完成后向我汇报。

2. 安排 fs 员工帮我读取一个文件,文件路径也告诉了,完成后也说一声。 这样一来,http 和 fs 等底层员工会通过自身的进程或者线程去完成这些任务。

等他们真正做完,向 JS 汇报“我干完了”。这时候,如果项目经理有时间,就会把成果传递给下一个人;要是没时间,就先排队等着。 说白了,让项目经理直接做这些事行得通,只是多学习一下的话会做得慢一些。但如果只进行调度,就能充分发挥其他员工的价值。 用术语来说就是,运行 JS 的容器是单线程的,同一时刻,不能同时运行两个 while 循环。不过,可以调度其他线程或者进程模块去执行任务。JS 主要做的事情通常是注册事件或者一些简单任务,它在 IO 密集型任务方面表现较好,而在 CPU 密集型任务上不太擅长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值