JS面試異步模擬紅綠燈實現(xiàn)詳解
引言
異步的問題是程序員繞不開的話題,無論在實際開發(fā)上還是在面試中,我們總會遇到各種頭疼的問題,但是細(xì)細(xì)品味,其實這些問題總能拓展我們的思路,激發(fā)我們的思維能力。培養(yǎng)我們的高情商能力。
(我,我編不下去了)紅綠燈模擬在異步問題上是經(jīng)典中的經(jīng)典,網(wǎng)絡(luò)上的設(shè)計也是層出不窮,我將給大家呈現(xiàn)一款比較獨特的設(shè)計。
問題拆解
紅綠燈在我們?nèi)粘I钍浅R姷模虼藢τ趩栴}大家是容易理解的,我們此次需要考慮如何模擬紅綠燈的無間斷切換和輪詢過程。
首先分析,我們可以通過while循環(huán)讓紅綠燈不間斷循環(huán),接住我們使用for await語法可以讓紅綠燈異步切換成同步的改變。
代碼設(shè)計
//模擬異步請求資源 function loadSource (target) { return new Promise((resolve,reject)=>{ setTimeout(() => { resolve(target.color) }, target.delay); }) } //核心的紅綠燈邏輯 async function lightTransform (lights) { while(true) { for(let i=0;i<lights.length;i++) { let res = await loadSource(lights[i]) console.log(res) } } } //數(shù)據(jù)封裝式的調(diào)用 lightTransform([ {color:"red",delay:1000}, {color:"green",delay:2000}, {color:"yellow",delay:3000} ])
效果演示
核心講解
其實整體的設(shè)計還是比較簡單,我這里使用了數(shù)組對象對紅綠燈進行了數(shù)據(jù)封裝,為了模擬紅綠燈的不間斷轉(zhuǎn)換使用while循環(huán),內(nèi)部為了讓彼此進行循序漸進的交替變化,將異步的方式轉(zhuǎn)換為同步代碼塊,此次使用的方法就是for await 完成的。
以上就是JS面試異步模擬紅綠燈實現(xiàn)詳解的詳細(xì)內(nèi)容,更多關(guān)于JS面試異步模擬紅綠燈的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
微信小程序 循環(huán)及嵌套循環(huán)的使用總結(jié)
這篇文章主要介紹了微信小程序 循環(huán)及嵌套循環(huán)的使用總結(jié)的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09Vue.js React與Angular流行前端框架優(yōu)勢對比
這篇文章主要為大家介紹了Vue.js React與Angular流行前端框架優(yōu)勢對比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03JavaScript策略模式利用對象鍵值的映射關(guān)系詳解
這篇文章主要為大家介紹了JavaScript策略模式利用對象鍵值的映射關(guān)系詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12package.json中browser?module?main字段優(yōu)先級對比
這篇文章主要介紹了package.json中browser?module?main字段的優(yōu)先級詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07