JS面試異步模擬紅綠燈實(shí)現(xiàn)詳解
引言
異步的問題是程序員繞不開的話題,無論在實(shí)際開發(fā)上還是在面試中,我們總會(huì)遇到各種頭疼的問題,但是細(xì)細(xì)品味,其實(shí)這些問題總能拓展我們的思路,激發(fā)我們的思維能力。培養(yǎng)我們的高情商能力。
(我,我編不下去了)紅綠燈模擬在異步問題上是經(jīng)典中的經(jīng)典,網(wǎng)絡(luò)上的設(shè)計(jì)也是層出不窮,我將給大家呈現(xiàn)一款比較獨(dú)特的設(shè)計(jì)。
問題拆解
紅綠燈在我們?nèi)粘I钍浅R姷?,因此?duì)于問題大家是容易理解的,我們此次需要考慮如何模擬紅綠燈的無間斷切換和輪詢過程。
首先分析,我們可以通過while循環(huán)讓紅綠燈不間斷循環(huán),接住我們使用for await語法可以讓紅綠燈異步切換成同步的改變。
代碼設(shè)計(jì)
//模擬異步請(qǐng)求資源
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è)計(jì)還是比較簡(jiǎn)單,我這里使用了數(shù)組對(duì)象對(duì)紅綠燈進(jìn)行了數(shù)據(jù)封裝,為了模擬紅綠燈的不間斷轉(zhuǎn)換使用while循環(huán),內(nèi)部為了讓彼此進(jìn)行循序漸進(jìn)的交替變化,將異步的方式轉(zhuǎn)換為同步代碼塊,此次使用的方法就是for await 完成的。
以上就是JS面試異步模擬紅綠燈實(shí)現(xiàn)詳解的詳細(xì)內(nèi)容,更多關(guān)于JS面試異步模擬紅綠燈的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
微信小程序 循環(huán)及嵌套循環(huán)的使用總結(jié)
這篇文章主要介紹了微信小程序 循環(huán)及嵌套循環(huán)的使用總結(jié)的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下2017-09-09
前端canvas中物體邊框和控制點(diǎn)的實(shí)現(xiàn)示例
這篇文章主要為大家介紹了前端canvas中物體邊框和控制點(diǎn)的實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
Vue.js React與Angular流行前端框架優(yōu)勢(shì)對(duì)比
這篇文章主要為大家介紹了Vue.js React與Angular流行前端框架優(yōu)勢(shì)對(duì)比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
js題解LeetCode1051 高度檢查器哈希表對(duì)比
這篇文章主要為大家介紹了JS題解LeetCode1051 高度檢查器哈希表對(duì)比,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
JavaScript策略模式利用對(duì)象鍵值的映射關(guān)系詳解
這篇文章主要為大家介紹了JavaScript策略模式利用對(duì)象鍵值的映射關(guān)系詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
package.json中browser?module?main字段優(yōu)先級(jí)對(duì)比
這篇文章主要介紹了package.json中browser?module?main字段的優(yōu)先級(jí)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07

