我有一種情況,我從FireFox 3.6+上的GWT網格中的服務器渲染項目。我有大約200個項目,我加載它們在循環:無響應的JavaScript通知
users = myService.getUsers();
for(User user : users){
myPanel.addUser(user); // Pseudocode. Actually i add some labels and text fields...
}
它tooks很長一段時間在這個循環改變DOM
,所以我得到了「無響應腳本」的通知。但我無法重構代碼或分頁,我需要一次加載1頁上的所有200個項目。
有什麼辦法可以抑制這個通知嗎?要通知瀏覽器我的腳本沒有掛起,但要做一些有用的事情?
UPD Ok Ok,這裏是我的代碼更接近。這是一個來自大項目的代碼,我們有很多自定義組件,所以我認爲它沒有實際價值。
myService.getUsersDetails(searchCriteria, new MyCallback<List<User>>)
{
@Override
protected void response(List<User> result)
{
gridExpanderPresenter.clear();
int i = 0;
for (User user: result)
{
UserDetailsView detailsView = detailsViewProvider.get();
gridExpanderPresenter.setPresenter(UsersPresenter.this);
gridExpanderPresenter.add(detailsView.asWidget()); //Here is DOM manipulation i mentioned
if (i++ % 2 == 1)
{
detailsView.setOdd(); //Setting style here
}
detailsView.setData(user);
}
}
});
而且我認爲this可以幫我...
你肯定沒有騎自行車嗎?不要認爲PC對200個javascript數組進行處理是個大麻煩......如果你仔細觀察你的代碼,原來的,而不是僞代碼,那將是非常好的。 – devdRew 2012-01-06 14:39:09
該警告應被視爲您的腳本需要修改的指示。你應該發佈相關的代碼,也許有人會看到改進的潛力。 – Pointy 2012-01-06 14:42:16