欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談JavaScript超時調(diào)用和間歇調(diào)用

 更新時間:2015年08月30日 16:55:53   投稿:hebedich  
JavaScript是單線程語言,但它允許通過設(shè)置超時值和間歇時間值來調(diào)度代碼在特定的時刻執(zhí)行。前者是在指定的時間過后執(zhí)行代碼,而后者則是每隔指定的時間就執(zhí)行一次代碼。

間歇調(diào)用

在JavaScript中間歇調(diào)用很常見,setInterval,就是間隔一定的時間重復(fù)調(diào)用。

setInterval()方法接收兩個參數(shù):第一個參數(shù)可以是字符串,也可以是函數(shù),第二個參數(shù)是一個以毫秒為單位的數(shù)字,表示重復(fù)間隔的時長。

參數(shù)是字符串

當?shù)谝粋€傳遞參數(shù)是字符串時,如下:

setInterval("alert('this is a string.')",1000);

這里的字符串是一段JavaScript代碼,和傳入的eval()函數(shù)的參數(shù)一樣,如果是有內(nèi)外兩個引號的話,記得引號不要相同就行了。

setInterval()會返回一個數(shù)值型的ID,這個ID是計劃執(zhí)行代碼的唯一標識符,所以可以用它來取消重復(fù)操作。setInterval()對應(yīng)的一個取消該操作的方法:clearInterval(),當然要取消重復(fù)操作的話,clearInterval()必須放在還沒有執(zhí)行完畢的時候。

比如:

var intervalId=setInterval(...);
clearInterval(intervalId);

首先我們獲取ID,然后將ID傳入clearInterval()中即可,因為取消操作緊跟在setInterval()后面,所以可以立即取消,就和沒發(fā)生一樣。

參數(shù)是函數(shù)

因為當傳遞的參數(shù)是字符串的時候,可能會導致性能損失,所以一般情況下,用的最多的還是給它傳遞一個函數(shù)。

如下:

var num=0;
function increNum(){
 num++;
 if(num>=10){
  clearInterval(intervalId);
  alert('over');
 }
}
intervalId=setInterval(increNum,500);

該段程序設(shè)置了一個increNum函數(shù),并作為參數(shù)傳遞給setInterval(),同時當重復(fù)運行到10次的時候,取消運行操作,彈出警告框。

超時調(diào)用

超時調(diào)用和間歇調(diào)用類似,setTimeout(),它也接收兩個參數(shù),第一個可以是包含JavaScript代碼的字符串,也可是一個函數(shù),第二個參數(shù)是延時時間和setInterval()方法的參數(shù)是一樣。

但是這里要說明一點:

延時時間并不是說經(jīng)過設(shè)定的延時后程序一定會執(zhí)行。

為什么呢?

因為JavaScript是單線程解釋器,所以在一定的時間內(nèi)只能執(zhí)行一段代碼,不能同時執(zhí)行多段代碼,所以在JavaScript中有一個任務(wù)隊列,將要執(zhí)行的任務(wù)按照先后順序排在隊列中,設(shè)定的延時時間是經(jīng)過這段時間將當前任務(wù)加入到任務(wù)隊列中。如果當前沒有任務(wù)執(zhí)行,那么加入到任務(wù)隊列中的代碼立刻執(zhí)行,如果當前還有正在執(zhí)行的代碼段,那么只有當該代碼段執(zhí)行完畢后再執(zhí)行新加入的任務(wù)。

同樣,setTimeout()也有一個返回ID,也可以通過這個數(shù)值ID來取消超時調(diào)用,對應(yīng)的取消方法是clearTimeout()。

在這里,我們用超時調(diào)用方法來把間歇調(diào)用中的那段重復(fù)執(zhí)行的代碼復(fù)寫一遍:

var num=0;
function increNum(){
 num++;
 if(num<=10){
  setTimeout(increNum,500);
 }else{
  alert('over');
 }
}
setTimeout(increNum,500);

這段程序也可以完成重復(fù)操作并在10次之后終止操作,和上述的setInterval()有區(qū)別的是它并沒有用返回的數(shù)值ID。

因為setInterval()是重復(fù)執(zhí)行,所以一直會有數(shù)值ID返回,所以必須得一直跟蹤這個數(shù)值ID,而setTimeout()執(zhí)行完畢后就不再執(zhí)行,所以我們不用跟蹤這個返回的數(shù)值ID,這就給我們帶來了一定的便利。

而且,后一個間歇調(diào)用可能會在前一個間歇調(diào)用還沒結(jié)束之前被調(diào)用,當函數(shù)的執(zhí)行時間比間歇調(diào)用的時間長的時候這種情況就會發(fā)生,所以綜上所述,用setTimeout()來模擬間歇調(diào)用是一種比較好的途徑。

當然,在比較簡單的程序中用setInterval()還是沒有很大問題的(突然想起了一句話,存在即是合理的~~~~)。

相關(guān)文章

  • 小程序?qū)崿F(xiàn)發(fā)表評論功能

    小程序?qū)崿F(xiàn)發(fā)表評論功能

    這篇文章主要為大家詳細介紹了小程序?qū)崿F(xiàn)發(fā)表評論功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • JavaScript中的undefined學習總結(jié)

    JavaScript中的undefined學習總結(jié)

    這篇文章主要是對JavaScript中的undefined進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-11-11
  • 微信小程序獲取用戶openid的圖文教程(含源碼)

    微信小程序獲取用戶openid的圖文教程(含源碼)

    微信小程序的開發(fā)過程中,有時前端需要獲取到openId來使用,下面這篇文章主要給大家介紹了關(guān)于微信小程序獲取用戶openid的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-01-01
  • JavaScript簡單遍歷DOM對象所有屬性的實現(xiàn)方法

    JavaScript簡單遍歷DOM對象所有屬性的實現(xiàn)方法

    這篇文章主要介紹了JavaScript簡單遍歷DOM對象所有屬性的實現(xiàn)方法,涉及JavaScript針對頁面元素屬性操作的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • 解決JS外部文件中文注釋出現(xiàn)亂碼問題

    解決JS外部文件中文注釋出現(xiàn)亂碼問題

    中文亂碼在Java Web開發(fā)中經(jīng)常出現(xiàn),這是由于不同的部分編碼不一樣造成的,一般在開發(fā)中,我們把所有能設(shè)編碼的地方,全部設(shè)置成UTF-8,但是有時候還是會出現(xiàn)亂碼的情況。下面通過本文給大家分享JS外部文件中文注釋出現(xiàn)亂碼的解決方案,一起看看吧
    2017-07-07
  • js 下拉菜單點擊旁邊收起實現(xiàn)(踩坑記)

    js 下拉菜單點擊旁邊收起實現(xiàn)(踩坑記)

    這篇文章主要介紹了js 下拉菜單點擊旁邊收起實現(xiàn)(踩坑記),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • uniapp使用uni-imei插件獲取手機的設(shè)備號

    uniapp使用uni-imei插件獲取手機的設(shè)備號

    uniapp框架是一款開發(fā)跨平臺應(yīng)用的工具,它支持iOS、Android以及Web等多個平臺,在這些平臺中,uniapp可以訪問某些設(shè)備的硬件信息,這篇文章主要給大家介紹了關(guān)于uniapp使用uni-imei插件獲取手機設(shè)備號的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • JavaScript中兩種鏈式調(diào)用實現(xiàn)代碼

    JavaScript中兩種鏈式調(diào)用實現(xiàn)代碼

    方法鏈一般適合對一個對象進行連續(xù)操作(集中在一句代碼)。一定程度上可以減少代碼量,缺點是它占用了函數(shù)的返回值。
    2011-01-01
  • js實現(xiàn)的標題欄新消息閃爍提示效果

    js實現(xiàn)的標題欄新消息閃爍提示效果

    這篇文章主要介紹了js實現(xiàn)的標題欄新消息閃爍提示效果,一些大型網(wǎng)站也會經(jīng)常用到這個效果,需要的朋友可以參考下
    2014-06-06
  • 一個不錯的字符串轉(zhuǎn)碼解碼函數(shù)(自寫)

    一個不錯的字符串轉(zhuǎn)碼解碼函數(shù)(自寫)

    一個不錯的字符串轉(zhuǎn)碼解碼函數(shù),自己寫的,有需要的朋友可以參考下
    2014-07-07

最新評論