это то с чего я и начинал, с вопроса как тут уйти от proto?
херню какую-то творишь
На выходе красиво все var f = new F(); f.send(1); f.edit(2); f.remove(3); f.notification(4);
const QUERY_INTERVAL = 1000;// Задержка между запросами не чаще чем раз в 1 секунду. const sleep = (ms, val) => new Promise(r => setTimeout(() => r(val), ms)) const noop = v => v const queuePromise = () => { let promise = Promise.resolve() return async cb => { const _promise = promise return promise = Promise.resolve((async () => { await _promise.then(noop, noop) return cb() })()) } } const proxyAllMethod = (obj, interval) => { const qp = queuePromise() return new Proxy(obj, { get(tar, prop) { if ( typeof tar[prop] !== 'function' ) return tar[prop] return async (...args) => qp(async () => { await sleep(interval) tar[prop](...args) }) } }) } class F { constructor() { return proxyAllMethod(this, QUERY_INTERVAL) } send(...args) { console.log(new Date()-0); console.log(args); console.log('----------'); return; } } const f = new F() f.send('Hi') f.send('Regina') f.send('UwU')
зато внутри говнокод
Обсуждают сегодня