国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

如何實(shí)現(xiàn)【紅綠燈】的問題

phoenixsky / 2065人閱讀

摘要:背景最近遇到個(gè)面試題點(diǎn)亮綠燈,然后點(diǎn)亮黃燈,然后點(diǎn)亮紅燈,然后重復(fù)循環(huán)。估計(jì)是考察相關(guān)內(nèi)容。那如何更好的實(shí)現(xiàn)呢實(shí)現(xiàn)啟動(dòng)改進(jìn)函數(shù)的貌似寫復(fù)雜了,函數(shù)本身返回的就是個(gè)對象,那給方法傳遞的箭頭函數(shù)冗余了。

背景

最近遇到個(gè)面試題:點(diǎn)亮綠燈3s,然后點(diǎn)亮黃燈1s,然后點(diǎn)亮紅燈2s,然后重復(fù)循環(huán)。估計(jì)是考察ES6 Promise相關(guān)內(nèi)容。那如何更好的實(shí)現(xiàn)呢?

Promise實(shí)現(xiàn)
function red () {
    console.log("red")
}

function green () {
    console.log("green")
}

function yellow() {
    console.log("yellow")
}

function genPromise(func, timeout) {
    return () => {
        func();
        return new Promise((resolve) => setTimeout(resolve, timeout))
    }
}

var redPromise = genPromise(red, 2000), 
    greenPromise = genPromise(green, 3000),
    yellowPromise = genPromise(yellow, 1000);

function step() {
    greenPromise().then(() => yellowPromise()).then(() => redPromise()).then(() => step())
}

// 啟動(dòng)
step();
改進(jìn)

step函數(shù)的貌似寫復(fù)雜了,yellowPromise函數(shù)本身返回的就是個(gè)Promise對象,那給then方法傳遞的箭頭函數(shù)冗余了。修改step函數(shù):

function step() {
    greenPromise().then(yellowPromise).then(redPromise).then(step)
}
//啟動(dòng)
step();
再改進(jìn)

使用async/wait改進(jìn)下step函數(shù):

async function step() {
    await greenPromise();
    await yellowPromise();
    await redPromise();
    step();
}
// 啟動(dòng)
step();
不止這些...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/98966.html

相關(guān)文章

  • 《從0到1學(xué)習(xí)Flink》—— 介紹Flink中Stream Windows

    摘要:在每個(gè)事件上,觸發(fā)器都可以決定觸發(fā)即清除刪除窗口并丟棄其內(nèi)容,或者啟動(dòng)并清除窗口。請注意,指定的觸發(fā)器不會(huì)添加其他觸發(fā)條件,但會(huì)替換當(dāng)前觸發(fā)器。結(jié)論對于現(xiàn)代流處理器來說,支持連續(xù)數(shù)據(jù)流上的各種類型的窗口是必不可少的。 showImg(https://segmentfault.com/img/remote/1460000017892799?w=1280&h=720); 前言 目前有許多數(shù)...

    jifei 評論0 收藏0
  • Java多線程奇幻之旅——Synchronized方式和CAS方式實(shí)現(xiàn)線程安全性能思考

    摘要:前言在上一篇文章中多線程奇幻之旅算法實(shí)現(xiàn)線程安全,我們介紹了和方式實(shí)現(xiàn)線程安全類的方法,兩種方式一個(gè)是鎖定阻塞方式,一個(gè)是非阻塞方式。 前言 在上一篇文章中《Java多線程奇幻之旅——CAS算法實(shí)現(xiàn)線程安全》,我們介紹了Synchronized和CAS方式實(shí)現(xiàn)線程安全類的方法,兩種方式一個(gè)是鎖定阻塞方式,一個(gè)是非阻塞方式。本文專注于兩種實(shí)現(xiàn)方式效率問題。本文是上篇文章的延續(xù),會(huì)借用到上...

    Chaz 評論0 收藏0
  • 前端設(shè)計(jì)模式用起來(1)狀態(tài)模式

    摘要:有限狀態(tài)機(jī)可以歸納出四個(gè)要素現(xiàn)態(tài)即當(dāng)前的狀態(tài)。但狀態(tài)模式還有一點(diǎn)需要注意到,當(dāng)采用子類繼承實(shí)現(xiàn)多種具體狀態(tài)的時(shí)候,注意控制狀態(tài)的數(shù)量,以免出現(xiàn)子類數(shù)量膨脹的現(xiàn)象在使用或等更完整面向?qū)ο笳Z言時(shí)。 業(yè)務(wù)代碼開發(fā)久了,偶爾看看設(shè)計(jì)模式,總會(huì)讓自己有一種清新脫俗的感覺??傁氚堰@種感覺記下來,但一想到要先起個(gè)恰如其分的標(biāo)題和開頭,就讓我有一種百爪撓心的糾結(jié),所以遲遲沒有開始。今天起更新我學(xué)習(xí)設(shè)計(jì)...

    Salamander 評論0 收藏0
  • 綠燈效果

    摘要:本實(shí)現(xiàn)來自重學(xué)前端第節(jié)執(zhí)行一里的代碼為什么比先執(zhí)行中的最后的問題,使用實(shí)現(xiàn)一個(gè)紅綠燈效果。打開電源紅綠燈開始工作啟動(dòng)紅綠燈延時(shí)的包裝同步函數(shù)包裝業(yè)務(wù)目標(biāo)綠色黃色紅色啟動(dòng)隊(duì)列循環(huán)隊(duì)列執(zhí)行綠燈三秒黃燈一秒紅燈倆秒 本實(shí)現(xiàn)來自 winter《重學(xué)前端》第16節(jié) JavaScript執(zhí)行(一): Promise里的代碼為什么比setTimeout先執(zhí)行?中的最后的問題,使用實(shí)現(xiàn)一個(gè)紅綠燈效果。...

    olle 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<