摘要:實現下面這道題中的函數這里等待了原型寫法維護一個數組,異步就函數,不是異步就字符串寫法維護一個隊列數組,里面全部是構造函數,第一個參數代碼是否異步,第二個是比較數組每一個都是構造函數有點浪費空間
實現下面這道題中的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; ies6寫法 維護一個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。其中刷到了一道有意思的題目,發現這道題是當時秋招...
摘要:重溫一個面試題內容數組內容為數組內容為個英文字母,使用兩個線程分別輸入兩個數組,打印內容為這樣的規律提取一下核心內容,去除次要內容兩個線程需要交替執行,打印數字的線程需要先執行,數組打印完畢后線程需要結束。 一道多線程面試題引起的自我救贖 近日去一個知名互聯網企業參加面試,之前準備多多信心滿滿,但是面試一開始就是一道不起眼的編程題 數組A內容為 1,2,3,4...52 ,數組B內容...
摘要:下面我們來使用面向對象類圖這里就不再畫了首先面試題中所提到的我們都可以看成類,比如停車場是一個類吧,它里面的車位是一個類吧,攝像頭,屏幕。。。 以下是某場的一道面試題(大概): 1、一個停車場,車輛入場時,攝像頭記錄下車輛信息2、屏幕上顯示所接收的車輛的信息情況(車牌號)以及各層車位的車位余量3、停車場一共四層車位,其中的三層都為普通車位,還有一層為特殊車位(體現在停車計費價格上面的不...
閱讀 718·2021-10-14 09:42
閱讀 1972·2021-09-22 15:04
閱讀 1574·2019-08-30 12:44
閱讀 2140·2019-08-29 13:29
閱讀 2734·2019-08-29 12:51
閱讀 548·2019-08-26 18:18
閱讀 702·2019-08-26 13:43
閱讀 2808·2019-08-26 13:38