Urut utama nod melaksanakan kod js Apabila ia merupakan operasi tak segerak, nod akan menyerahkannya kepada libuv untuk pelaksanaan, dan kemudian melaksanakan kod di sebalik operasi tak segerak. Selepas libuv dilaksanakan, libuv akan diletakkan dalam baris gilir pekeliling akan mempunyai gelung peristiwa (Gelung Peristiwa) serupa dengan while(true) Gelung peristiwa ini wujud dalam utas tunggal nod (iaitu, utas utama). . Gelung benang utama Dapatkan fungsi panggil balik pelaksanaan acara.
Jadi apakah proses gelung utas utama untuk mengambil acara dan melaksanakan kod tak segerak di belakangnya? Adalah mustahil untuk benang melakukan dua perkara pada masa yang sama Selepas melaksanakan kod tak segerak, adakah gelung CPU akan mengambil peristiwa apabila ia melahu?
Pertama sekali, jelaskan bahawa utas utama tidak akan meninjau apabila terdapat pelaksanaan kod.
Jadi utas utama akan melaksanakan semua kod awal (kod bukan panggil balik) sebelum mengundi baris gilir acara (baris gilir acara boleh dianggap sebagai objek js apabila ditinjau) kerana secara teori utas utama enjin js hanya boleh mengenali kod js.
Tetapi selepas kod awal dilaksanakan, utas utama js akan meninjau acara Apabila fungsi panggil balik diperoleh, enjin js tidak akan meninjau semula sehingga kod panggil balik semasa dilaksanakan.
Untuk meringkaskan, hanya enjin js akan membuat tinjauan apabila tiada kod untuk dilaksanakan Dalam erti kata lain, sentiasa ada satu fungsi panggil balik dalam utas utama js
Saya rasa artikel ini boleh menyelesaikan keraguan anda