在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  HTML/ 關(guān)于event loop的一些疑惑

關(guān)于event loop的一些疑惑

以下這段代碼按照事件循環(huán)機制,不應(yīng)該是先打印出‘heap over'再打印xhr.readyState最后打印responseText嗎,為什么最終結(jié)果是先打印了xhr.readyState的狀態(tài)碼1再打印’heap over',再繼續(xù)打印readyState的其他狀態(tài)碼,onreadystatechenge到底是同步還是異步?當(dāng)我把open方法放到onreadystate之前又先打印‘heap over’,有點搞不懂

var xhr = new XMLHttpRequest();

    xhr.onreadystatechange = function() {

            console.log(xhr.readyState)

                if(xhr.readyState == 4 && xhr.status == 200){

                    console.log(xhr.responseText);

                }

            }



xhr.open("GET",'data.txt',true); 

    xhr.send(null);



    for(var i = 0; i < 1000000000; i ++) {}

    console.log('heap over')
回答
編輯回答
怣痛

你得先了解一下, readystate的狀態(tài)
open在前, 調(diào)用的時候, onreadystatechange還未設(shè)置,所以狀態(tài)1的時候不會被打印出來
在后,調(diào)用的時候, onreadystatechange已設(shè)置,所以狀態(tài)1的時候會被打印出來,然后才是 heap over

2018年7月8日 14:03
編輯回答
還吻

調(diào)用xhr.open("GET",'data.txt',true); 的時候會改變readyState,所以先觸發(fā)了一次onreadystatechange

2018年4月13日 15:38