摘要:實(shí)現(xiàn)下面這道題中的函數(shù)這里等待了原型寫法維護(hù)一個(gè)數(shù)組,異步就函數(shù),不是異步就字符串寫法維護(hù)一個(gè)隊(duì)列數(shù)組,里面全部是構(gòu)造函數(shù),第一個(gè)參數(shù)代碼是否異步,第二個(gè)是比較數(shù)組每一個(gè)都是構(gòu)造函數(shù)有點(diǎn)浪費(fèi)空間
實(shí)現(xiàn)下面這道題中的machine函數(shù)
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原型寫法
維護(hù)一個(gè)數(shù)組,異步就push函數(shù),不是異步就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寫法 維護(hù)一個(gè)queue隊(duì)列數(shù)組,里面全部是構(gòu)造函數(shù),第一個(gè)參數(shù)代碼是否異步,第二個(gè)是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) } } }比較數(shù)組每一個(gè)都是構(gòu)造函數(shù)有點(diǎn)浪費(fèi)空間
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/110176.html
摘要:解決方案異或操作異或運(yùn)算是對(duì)于二進(jìn)制數(shù)字而言的,比如說(shuō)一個(gè)有兩個(gè)二進(jìn)制,如果兩個(gè)值不相同,則異或結(jié)果為。比如說(shuō),本質(zhì)上其實(shí)是和的每一對(duì)比特位執(zhí)行異或操作,等價(jià)于下面數(shù)字對(duì)應(yīng)的二進(jìn)制數(shù)字對(duì)應(yīng)的二進(jìn)制數(shù)字對(duì)應(yīng)的二進(jìn)制因此的結(jié)果就為啦。 新年第一篇文章,先祝大家新年快樂(lè)!!那么接下來(lái)進(jìn)入正文。 前言 前陣子突發(fā)奇想,突然開(kāi)始刷leetcode。其中刷到了一道有意思的題目,發(fā)現(xiàn)這道題是當(dāng)時(shí)秋招...
摘要:面試題題目頁(yè)面上有一個(gè)輸入框,兩個(gè)按鈕,按鈕和按鈕,點(diǎn)擊或者分別會(huì)發(fā)送一個(gè)異步請(qǐng)求,請(qǐng)求完成后,結(jié)果會(huì)顯示在輸入框中。 面試題題目 頁(yè)面上有一個(gè)輸入框,兩個(gè)按鈕,A按鈕和B按鈕,點(diǎn)擊A或者B分別會(huì)發(fā)送一個(gè)異步請(qǐng)求,請(qǐng)求完成后,結(jié)果會(huì)顯示在輸入框中。 題目要求,用戶隨機(jī)點(diǎn)擊A和B多次,要求輸入框顯示結(jié)果時(shí),按照用戶點(diǎn)擊的順序顯示,舉例: 用戶點(diǎn)擊了一次A,然后點(diǎn)擊一次B,又點(diǎn)擊一次A,輸...
摘要:重溫一個(gè)面試題內(nèi)容數(shù)組內(nèi)容為數(shù)組內(nèi)容為個(gè)英文字母,使用兩個(gè)線程分別輸入兩個(gè)數(shù)組,打印內(nèi)容為這樣的規(guī)律提取一下核心內(nèi)容,去除次要內(nèi)容兩個(gè)線程需要交替執(zhí)行,打印數(shù)字的線程需要先執(zhí)行,數(shù)組打印完畢后線程需要結(jié)束。 一道多線程面試題引起的自我救贖 近日去一個(gè)知名互聯(lián)網(wǎng)企業(yè)參加面試,之前準(zhǔn)備多多信心滿滿,但是面試一開(kāi)始就是一道不起眼的編程題 數(shù)組A內(nèi)容為 1,2,3,4...52 ,數(shù)組B內(nèi)容...
摘要:下面我們來(lái)使用面向?qū)ο箢悎D這里就不再畫了首先面試題中所提到的我們都可以看成類,比如停車場(chǎng)是一個(gè)類吧,它里面的車位是一個(gè)類吧,攝像頭,屏幕。。。 以下是某場(chǎng)的一道面試題(大概): 1、一個(gè)停車場(chǎng),車輛入場(chǎng)時(shí),攝像頭記錄下車輛信息2、屏幕上顯示所接收的車輛的信息情況(車牌號(hào))以及各層車位的車位余量3、停車場(chǎng)一共四層車位,其中的三層都為普通車位,還有一層為特殊車位(體現(xiàn)在停車計(jì)費(fèi)價(jià)格上面的不...
閱讀 720·2021-10-14 09:42
閱讀 1973·2021-09-22 15:04
閱讀 1583·2019-08-30 12:44
閱讀 2144·2019-08-29 13:29
閱讀 2735·2019-08-29 12:51
閱讀 550·2019-08-26 18:18
閱讀 705·2019-08-26 13:43
閱讀 2815·2019-08-26 13:38