摘要:实现下面这道题中的函数这里等待了原型写法维护一个数组,异步就函数,不是异步就字符串写法维护一个队列数组,里面全部是构造函数,第一个参数代码是否异步,第二个是比较数组每一个都是构造函数有点浪费空间
实现下面这道题中的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) } } }比较数组每一个都是构造函数有点浪费空间
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/110176.html
摘要:解决方案异或操作异或运算是对于二进制数字而言的,比如说一个有两个二进制,如果两个值不相同,则异或结果为。比如说,本质上其实是和的每一对比特位执行异或操作,等价于下面数字对应的二进制数字对应的二进制数字对应的二进制因此的结果就为啦。 新年第一篇文章,先祝大家新年快乐!!那么接下来进入正文。 前言 前阵子突发奇想,突然开始刷leetcode。其中刷到了一道有意思的题目,发现这道题是当时秋招...
摘要:重温一个面试题内容数组内容为数组内容为个英文字母,使用两个线程分别输入两个数组,打印内容为这样的规律提取一下核心内容,去除次要内容两个线程需要交替执行,打印数字的线程需要先执行,数组打印完毕后线程需要结束。 一道多线程面试题引起的自我救赎 近日去一个知名互联网企业参加面试,之前准备多多信心满满,但是面试一开始就是一道不起眼的编程题 数组A内容为 1,2,3,4...52 ,数组B内容...
摘要:下面我们来使用面向对象类图这里就不再画了首先面试题中所提到的我们都可以看成类,比如停车场是一个类吧,它里面的车位是一个类吧,摄像头,屏幕。。。 以下是某场的一道面试题(大概): 1、一个停车场,车辆入场时,摄像头记录下车辆信息2、屏幕上显示所接收的车辆的信息情况(车牌号)以及各层车位的车位余量3、停车场一共四层车位,其中的三层都为普通车位,还有一层为特殊车位(体现在停车计费价格上面的不...
阅读 712·2021-10-14 09:42
阅读 1966·2021-09-22 15:04
阅读 1569·2019-08-30 12:44
阅读 2133·2019-08-29 13:29
阅读 2728·2019-08-29 12:51
阅读 542·2019-08-26 18:18
阅读 697·2019-08-26 13:43
阅读 2803·2019-08-26 13:38