我發現一個很嚴重的問題,在一頁代碼中,和chrome相關的代碼(例如chrome.tabs.……)全部都被放到普通代碼后面去執行了,導致執行順序大亂。例如以下的一個測試文件,每次打開一個新tab,就會輸出a、b、c、d、e 五個字符,協助判斷代碼執行的順序,結果發現執行順序大大出乎我的意料,代表chrome相關的代碼被放置后面執行了??墒俏也幌胱屗鼈兎质裁磈s還是chrome的代碼,就想從上到下執行,該怎么辦?代碼下載(里面有個popup.js和popup.html是多余的,可無視)以下是background.js,其他的就不貼了 chrome.runtime.onMessage.addListener(function(request, sender, sendResponse)
{
if(request.msgcheck=="contentjs")
{
console.log("a");
chrome.tabs.get(sender.tab.id, function(tab){console.log("b")});
console.log("c");
for(var i=0;i<2;i++)
{
console.log("d");
chrome.tabs.get(sender.tab.id, function(tab){console.log("e")});
}
//我以為最終結果是a,b,c,d,e,d,e,結果特么居然是a,c,d,d,b,e,e,連循環都能割裂,為何這么屌!
}
});
好像chrome的API代碼全部被強制放到正常js代碼后面執行了,怎樣才能不分代碼類型按順序執行?
慕容3067478
2018-05-28 10:19:00