同步異步阻塞非阻塞io 在JavaScript中,是否存在“同步非阻塞”和“異步阻塞”這兩種情況?
在JavaScript中,是否存在“同步非阻塞”和“異步阻塞”這兩種情況?首先,JS是單線程的,沒有多線程自然沒有同步異步之說。只要是執(zhí)行JS代碼,必然是同步的。JS所謂的同步和異步,和C及JAVA里
在JavaScript中,是否存在“同步非阻塞”和“異步阻塞”這兩種情況?
首先,JS是單線程的,沒有多線程自然沒有同步異步之說。只要是執(zhí)行JS代碼,必然是同步的。JS所謂的同步和異步,和C及JAVA里的線程異步不是同一個(gè)概念,只用在JS執(zhí)行線程使用AJAX和網(wǎng)絡(luò)資源處理線程之間切換時(shí)是否等待。如果采用同步請(qǐng)求,則在請(qǐng)求完成之前,JS線程會(huì)一直掛起等待,必然是阻塞的。使用異步請(qǐng)求,則JS線程會(huì)在發(fā)起網(wǎng)絡(luò)請(qǐng)求后繼續(xù)向下執(zhí)行。這個(gè)阻塞也是在實(shí)現(xiàn)引擎的C和C 層面來說的,而非針對(duì)JS本身。用戶從JS層面真正能夠直觀體會(huì)到"阻塞",是在alert等彈出框顯示時(shí)。瀏覽器內(nèi)核本身并沒有阻塞alert,而是在上層實(shí)現(xiàn)上去對(duì)它進(jìn)行的阻塞。所以,我的答案是:negative