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

資訊專欄INFORMATION COLUMN

一道很有意思的面試題

curlyCheng / 547人閱讀

摘要:實現下面這道題中的函數這里等待了原型寫法維護一個數組,異步就函數,不是異步就字符串寫法維護一個隊列數組,里面全部是構造函數,第一個參數代碼是否異步,第二個是比較數組每一個都是構造函數有點浪費空間

實現下面這道題中的machine函數

function machine() {
    
}
machine("ygy").execute() 
// start ygy
machine("ygy").do("eat").execute(); 
// start ygy
// ygy eat
machine("ygy").wait(5).do("eat").execute();
// start ygy
// wait 5s(這里等待了5s)
// ygy eat
machine("ygy").waitFirst(5).do("eat").execute();
// wait 5s
// start ygy
// ygy eat
原型寫法

維護一個數組,異步就push函數,不是異步就push字符串

function machine(name) {
    if(!(this instanceof machine)){
        return new machine(name)
    }  
    this.name = name
    this.logs = []
    this.logs.push(`start ${name}`)
}
machine.defer = function(time){
    const times = time
    return function(){
        console.log(`wait ${times}s`)
          return new Promise((resolve)=>{
            setTimeout(()=>{resolve()},times*1000)
        })
    }
}
machine.prototype.execute = async function(){
    const logs = this.logs
    if(logs.length > 0){
         for(let i=0; i
es6寫法

維護一個queue隊列數組,里面全部是構造函數,第一個參數代碼是否異步,第二個是callback

function machine(name) {
    return new Action(name)
}


const defer = (time, callback) => {
    return new Promise((resolve) => {
        setTimeout(() => {
            resolve(callback())
        }, time * 1000)
    })
}
class QueueItem {
    constructor(defer, callback) {
        this.defer = defer;
        this.callback = callback;
    }
}
class Action {
    queue = []
    constructor(name) {
        this.name = name;
        this.queue.push(new QueueItem(0, () => console.log(`start ${this.name}`)))
    }
    do(eat) {
        this.queue.push(new QueueItem(0, () => console.log(`${this.name} ${eat}`)))
        return this;
    }
    wait(time) {
        this.queue.push(new QueueItem(time, () => console.log(`wait ${time}s`)))
        return this;
    }
    waitFirst(time) {
        this.queue.unshift(new QueueItem(time, () => console.log(`wait ${time}s`)))
        return this;
    }
    async execute() {
        while(this.queue.length > 0) {
            const curItem = this.queue.shift();
            if (!curItem.defer) {
                curItem.callback();
                continue;
            }
            await defer(curItem.defer, curItem.callback)
        }
    }
}
比較

數組每一個都是構造函數有點浪費空間

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/110176.html

相關文章

  • 一道意思面試算法

    摘要:解決方案異或操作異或運算是對于二進制數字而言的,比如說一個有兩個二進制,如果兩個值不相同,則異或結果為。比如說,本質上其實是和的每一對比特位執行異或操作,等價于下面數字對應的二進制數字對應的二進制數字對應的二進制因此的結果就為啦。 新年第一篇文章,先祝大家新年快樂?。∧敲唇酉聛磉M入正文。 前言 前陣子突發奇想,突然開始刷leetcode。其中刷到了一道有意思的題目,發現這道題是當時秋招...

    maxmin 評論0 收藏0
  • 一道常見面試

    摘要:面試題題目頁面上有一個輸入框,兩個按鈕,按鈕和按鈕,點擊或者分別會發送一個異步請求,請求完成后,結果會顯示在輸入框中。 面試題題目 頁面上有一個輸入框,兩個按鈕,A按鈕和B按鈕,點擊A或者B分別會發送一個異步請求,請求完成后,結果會顯示在輸入框中。 題目要求,用戶隨機點擊A和B多次,要求輸入框顯示結果時,按照用戶點擊的順序顯示,舉例: 用戶點擊了一次A,然后點擊一次B,又點擊一次A,輸...

    Heier 評論0 收藏0
  • 一道多線程面試引起自我救贖

    摘要:重溫一個面試題內容數組內容為數組內容為個英文字母,使用兩個線程分別輸入兩個數組,打印內容為這樣的規律提取一下核心內容,去除次要內容兩個線程需要交替執行,打印數字的線程需要先執行,數組打印完畢后線程需要結束。 一道多線程面試題引起的自我救贖 近日去一個知名互聯網企業參加面試,之前準備多多信心滿滿,但是面試一開始就是一道不起眼的編程題 數組A內容為 1,2,3,4...52 ,數組B內容...

    BaronZhang 評論0 收藏0
  • 一道面試引發思考

    摘要:下面我們來使用面向對象類圖這里就不再畫了首先面試題中所提到的我們都可以看成類,比如停車場是一個類吧,它里面的車位是一個類吧,攝像頭,屏幕。。。 以下是某場的一道面試題(大概): 1、一個停車場,車輛入場時,攝像頭記錄下車輛信息2、屏幕上顯示所接收的車輛的信息情況(車牌號)以及各層車位的車位余量3、停車場一共四層車位,其中的三層都為普通車位,還有一層為特殊車位(體現在停車計費價格上面的不...

    Apollo 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<