Javascript延遲執(zhí)行實現(xiàn)方法(setTimeout)
更新時間:2010年12月30日 22:09:42 作者:
延遲執(zhí)行,其實就是用到了setTimeout這個函數(shù)。善于利用這個函數(shù),可以減少很多ajax的請求,以及dom操作。
1。延遲切換tab
需求:頁面上有幾個tab,切換tab的時候,會對某個特定區(qū)域的數(shù)據(jù)進行拉取更新。
弊端:用戶從第一個tab切換一直快速切到尾,就會產(chǎn)生n個ajax請求。其實用戶只是需要看到最后一個tab的數(shù)據(jù)。
var changeTab = function(){
var timeId = 0;
return function(tabId){
if(timeId){
clearTimeout(timeId);
timeId=0;
}
setTimeout(function(){
//ajax do something
},500);
};
}();
一個比較簡單的例子,綁定在tab上的onmouseover,如果用戶不停的來回切換tab,ajax請求不會執(zhí)行,只有停頓500毫秒后,才會執(zhí)行,500毫秒,其實蠻短的,基本上不會影響到用戶體驗。
2。延遲自動完成
需求:在文本輸入框中,監(jiān)聽用戶輸入,實現(xiàn)自動完成功能。
弊端:用戶每輸入一個字符,都會產(chǎn)生一個ajax請求,如果用戶連續(xù)輸入了一長串內(nèi)容,請求次數(shù)就很多,實際上,最后的那次,才是用戶需要的。
代碼與上面例子類似。
3。延遲滾動
需求:頁面的廣告,需要用戶滾動到哪,就跟到哪。
弊端:用戶滾動在底,觸發(fā)了N次的讓廣告重新定位的函數(shù)。其實,只需要當用戶停下的時候,才觸發(fā)一次就足夠了。
代碼與1類似。
其實有很多這樣這樣的例子,有些事情,不需要馬上去執(zhí)行,可以延遲一點時間才執(zhí)行,時間很短,不影響用戶體驗,又可以減少很多不必要的消耗。
需求:頁面上有幾個tab,切換tab的時候,會對某個特定區(qū)域的數(shù)據(jù)進行拉取更新。
弊端:用戶從第一個tab切換一直快速切到尾,就會產(chǎn)生n個ajax請求。其實用戶只是需要看到最后一個tab的數(shù)據(jù)。
復制代碼 代碼如下:
var changeTab = function(){
var timeId = 0;
return function(tabId){
if(timeId){
clearTimeout(timeId);
timeId=0;
}
setTimeout(function(){
//ajax do something
},500);
};
}();
一個比較簡單的例子,綁定在tab上的onmouseover,如果用戶不停的來回切換tab,ajax請求不會執(zhí)行,只有停頓500毫秒后,才會執(zhí)行,500毫秒,其實蠻短的,基本上不會影響到用戶體驗。
2。延遲自動完成
需求:在文本輸入框中,監(jiān)聽用戶輸入,實現(xiàn)自動完成功能。
弊端:用戶每輸入一個字符,都會產(chǎn)生一個ajax請求,如果用戶連續(xù)輸入了一長串內(nèi)容,請求次數(shù)就很多,實際上,最后的那次,才是用戶需要的。
代碼與上面例子類似。
3。延遲滾動
需求:頁面的廣告,需要用戶滾動到哪,就跟到哪。
弊端:用戶滾動在底,觸發(fā)了N次的讓廣告重新定位的函數(shù)。其實,只需要當用戶停下的時候,才觸發(fā)一次就足夠了。
代碼與1類似。
其實有很多這樣這樣的例子,有些事情,不需要馬上去執(zhí)行,可以延遲一點時間才執(zhí)行,時間很短,不影響用戶體驗,又可以減少很多不必要的消耗。
相關文章
微信小程序?qū)崿F(xiàn)canvas分享朋友圈海報
這篇文章主要為大家詳細介紹了微信小程序?qū)崿F(xiàn)canvas分享朋友圈海報,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-06-06檢測是否已安裝 .NET Framework 3.5的js腳本
管理員必須首先確認存在 .NET Framework 3.5 運行庫,然后才能將 Windows Presentation Foundation (WPF) 應用程序部署在面向 .NET Framework 3.5 的系統(tǒng)上。2009-02-02Bootstrap-table自定義可編輯每頁顯示記錄數(shù)
這篇文章主要介紹了Bootstrap-table自定義可編輯每頁顯示記錄數(shù)的相關知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-09-09confirm的用法示例用于按鈕操作時確定是否執(zhí)行
這篇文章主要介紹了confirm的用法,confirm一般用于按鈕操作時確定是否執(zhí)行,需要的朋友可以參考下2014-06-06JS表格組件神器bootstrap table詳解(強化版)
這篇文章主要以實例的方式為大家再次介紹了JS表格組件神器bootstrap table,bootstrap table界面采用扁平化的風格,用戶體驗比較好,更好兼容各種客戶端,需要了解更多bootstrap table的朋友可以參考下2016-05-05webpack自動化打包webpack-dev-server的實現(xiàn)
我們每次改完要打包的資源文件,和配置文件都是是輸入npx webpack命令手動打包的,本文就來介紹一下webpack自動化打包webpack-dev-server的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2023-07-07