javascript - 原生JS實(shí)現(xiàn)發(fā)送驗(yàn)證碼計(jì)秒
問題描述
現(xiàn)在有個(gè)問題就如題所示,我想有一個(gè)登錄頁面,但是是基于遙控器的。綁定手機(jī)時(shí)需要向手機(jī)發(fā)送驗(yàn)證碼,隨后按鈕的label就要隨著時(shí)間減少 60s 50s ... 0s 等 在計(jì)秒的過程中,我可能還會(huì)上下左右操作。
問題是這樣,稍微了解了下 js 是單線程運(yùn)行 我計(jì)秒這個(gè) 動(dòng)作 和我計(jì)秒的同時(shí)進(jìn)行上下左右切換焦點(diǎn)并行,在我理解是2個(gè)線程操作。所以 小弟不得其解,怎么去實(shí)現(xiàn)呢? 求高人指點(diǎn)。
問題解答
回答1:開一個(gè) setInterval 跑完60秒自動(dòng)解除button的disabled
跑的過程中時(shí)間累減
比如
//偽代碼、思路是這樣var i = 60;var interval;interval = setInterval(function(){ document.getElementById('testBtn').innerHTML(i+’s’) i = i-1 if(i<=0){clearInterval(interval)//解除你的btn不可點(diǎn)擊 }},1000)回答2:
定時(shí)器是異步執(zhí)行的,定時(shí)是由另一個(gè)工作線程來完成的,對(duì)主線程不會(huì)有影響。當(dāng)定時(shí)器時(shí)間到達(dá)后,會(huì)把要執(zhí)行的回調(diào)函數(shù)放到任務(wù)隊(duì)列里,并由主線程來調(diào)用回調(diào)函數(shù)。
所以在主線程上的操作不會(huì)影響定時(shí)器。
回答3:不用關(guān)心線程問題 setInterval可以
相關(guān)文章:
1. 怎么php怎么通過數(shù)組顯示sql查詢結(jié)果呢,查詢結(jié)果有多條,如圖。2. 求大神支招,php怎么操作在一個(gè)html文件的<head>標(biāo)記內(nèi)添加內(nèi)容?3. php - 數(shù)據(jù)庫表如果是null怎么替換為其他字段的值4. mysql - 數(shù)據(jù)庫建字段,默認(rèn)值空和empty string有什么區(qū)別 1105. 致命錯(cuò)誤: Class ’appfacadeTest’ not found6. mysql - JAVA怎么實(shí)現(xiàn)一個(gè)DAO同時(shí)實(shí)現(xiàn)查詢兩個(gè)實(shí)體類的結(jié)果集7. javascript - mysql插入數(shù)據(jù)時(shí)怎樣避免與庫中的數(shù)據(jù)重復(fù)?8. mysql建表報(bào)錯(cuò),查手冊(cè)看不懂,求解?9. shell - Update query wrong in MySQL10. sql語句 - 如何在mysql中批量添加用戶?
