@
Mozshaw @
shintendo @
754181906aaa ========
谢谢
我的新理解如下:
当我用浏览器打开一个网页后, 浏览器引擎会把代码捋一捋,把代码里所有方法 放入 堆栈里,也就是 task Queue
js 线程就像一个工人,
而 task Queue 就是工作列表,
工人开始工作后,就去 task Queue 领取一份工作,先领取上面的任务(先进后出, 后进先出,先安排的任务后做,后安排的任务先做)
工人做完一份工作后,这个工作就从 task Queue 里删除了(从堆栈里弹出了)
然后工人继续领取下一份工作
其中有一份工作是,发起一个异步 io 操作,工人领取了,并执行了这个 api,工人完成了发起请求的工作,于是继续领取下一份工作
工人执行的那个 api 就是让浏览器去请求数据,这时候浏览器就去请求数据,
在浏览器请求数据的过程中, 工人还是继续领任务、做任务,每做完一个任务,浏览器就会把这个任务从 task Queue 里删掉
一段时间后(可能几十毫秒),浏览器得到了 io 数据,然后把 io 数据,和处理 io 数据的代码放在 task Queue 列表的最上面, 等待工人下一次来领取这个任务
后来,工人做完了手上的工作,又来领取新工作, 就领取到了这个 带有 io 数据的任务, 然后 工人就按照代码对这个 io 数据进行处理、加工
请问我的理解对吗