this.queue( type, function( next, hooks ) { var timeout = window.setTimeout( next, time ); hooks.stop = function() { window.clearTimeout( timeout ); }; } )
result.forEach(function (item, i) { var itemStr = item.toString().split(',').join('') if (!_.hash[itemStr]) { _.queue.push(item) _.hash[itemStr] = item _.prevVertx[itemStr] = currentNodeStr } })
constructor (options, context) { const { localOptions, resolveNodeFilePath } = context this.options = defaultsDeep(localOptions, options) this.processor = this.createProcessor(localOptions) this.resolveNodeFilePath = resolveNodeFilePath this.assets = context.assets || context.queue }
test('handle absolute image paths outside context', async () => { const filePath = '/assets/images/image.png' const queue = new AssetsQueue({ context, config: baseconfig }) const result = await queue.add(filePath) expect(queue.images.queue).toHaveLength(0) expect(result.type).toEqual('image') expect(result.src).toEqual(filePath) expect(result.filePath).toEqual(filePath) expect(result.mimeType).toEqual('image/png') })
const bench = async () => { const start = process.hrtime(); for (let i = 0; i < NUMBER_OF_SCENE_TO_REGISTER; i += 1) { sceneManager.execute(String(i)); } sceneManager.queue.start(() => { displayNumberOfEventProcessedBySeconds(start); bench(); }); }
get(key) { debug('get', key); return this.queue.enqueue(key, () => new Promise(resolve => { this.client.get(key, function (err, res) { debug('-> get', key, res); if (!res) { return resolve(null); } resolve(JSON.parse(res)); }); })); }
test('generate src for file', async () => { const filePath = path.resolve(context, 'assets/dummy.pdf') const queue = new AssetsQueue({ context, config: baseconfig }) const result = await queue.add(filePath) expect(queue.files.queue).toHaveLength(1) expect(result.type).toEqual('file') expect(result.filePath).toEqual(filePath) expect(result.mimeType).toEqual('application/pdf') expect(result.destPath).toEqual(path.join(context, 'assets/files/dummy.test.pdf')) expect(result.src).toEqual('/assets/files/dummy.test.pdf') })
push(request) { if (this.busy) { this.queue.push(request); return this.run(); } else { return this.execute(request); } }
async emptyQueue() { this.queue.forEach(func => { func(); }); }
enqueue(payload) { debug('Enqueue event in worker queue'); if (this.running < this.concurrency) { this.running++; this.execute(payload); } else { this.queue.unshift(payload); } }
pop() { debug('Pop worker queue and execute'); const payload = this.queue.pop(); if (payload) { this.execute(payload); } else { this.running--; } }
test('disable blur filter', async () => { const filePath = path.resolve(context, 'assets/1000x600.png') const queue = new AssetsQueue({ context, config: baseconfig }) const result = await queue.add(filePath, { blur: '0' }) expect(queue.images.queue).toHaveLength(2) expect(result.dataUri).toMatchSnapshot() })
test('disable lazy loading', async () => { const filePath = path.resolve(context, 'assets/1000x600.png') const queue = new AssetsQueue({ context, config: baseconfig }) const result = await queue.add(filePath, { immediate: true }) expect(queue.images.queue).toHaveLength(2) expect(result.imageHTML).toMatchSnapshot() expect(result.noscriptHTML).toEqual('') expect(result.dataUri).toBeUndefined() })
test('set custom blur', async () => { const filePath = path.resolve(context, 'assets/1000x600.png') const queue = new AssetsQueue({ context, config: baseconfig }) const result = await queue.add(filePath, { blur: 10 }) expect(queue.images.queue).toHaveLength(2) expect(result.src).toEqual('/assets/static/1000x600.248ba3a.test.png') })
test('get queue values', async () => { const filePath = path.resolve(context, 'assets/1000x600.png') const queue = new AssetsQueue({ context, config: baseconfig }) await queue.add(filePath) expect(queue.images.queue).toHaveLength(2) })