Created
September 6, 2019 15:48
-
-
Save Lodo4ka/381bd9223f167fa587013bb27ce0a191 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { getQueue } from '../test/data'; | |
import ExecutorExt from '../test/ExecutorExt'; | |
import { IExecutor } from './Executor'; | |
import ITask from './Task'; | |
export default async function run(executor: IExecutor, queue: Iterable<ITask>, maxThreads = 0) { | |
maxThreads = Math.max(0, maxThreads); | |
/** | |
* Код надо писать сюда | |
* Тут что-то вызываем в правильном порядке executor.executeTask для тасков из очереди queue | |
*/ | |
// function* generatorTask() { | |
// yield queue; | |
// } | |
// const generator = generatorTask(); | |
// let syncTasks: ITask[] = []; | |
// const asyncTask: ITask[] = []; | |
let syncTasks: number[] = []; | |
const asyncTask: number[] = []; | |
// const pair = []; | |
const noPair: number[] = []; | |
const arrStack: number[] = []; | |
for (const taskCurrent of queue) { | |
// if(syncTasks.filter(taskElem => taskElem.targetId === taskCurrent.targetId)) { | |
// const taskPrev = syncTasks.filter(taskElem => taskElem.targetId === taskCurrent.targetId)[0]; | |
// syncTasks = syncTasks.filter(taskElem => taskElem.targetId !== taskCurrent.targetId); | |
// asyncTask.push(taskPrev, taskCurrent); | |
// } else { | |
// syncTasks.push(taskCurrent); | |
// } | |
arrStack.push(taskCurrent.targetId); | |
} | |
// const pair = arrStack.filter((item, index) => arrStack.indexOf(item) !== index); | |
// console.log(pair) | |
function duplicate(arr: number[]) { | |
interface NumberMap { [s: string]: number[] } | |
const object: NumberMap = { | |
}; | |
const result = []; | |
arr.forEach(item => { | |
if (!object[item]) { | |
object[item] = []; | |
} | |
object[item].push(item); | |
}); | |
for (const prop of Object.keys(object)) { | |
if (object[prop].length >= 2) { | |
result.push({ [prop]: object[prop] }); | |
} | |
} | |
return result; | |
} | |
console.log(duplicate(arrStack)); | |
// const recursiveTask = (generator: IterableIterator<Iterable<ITask>>, arrTask: Array<Iterable<ITask>>) => { | |
// const task = generator.next(); | |
// if (task.done) { | |
// Promise.all(arrTask).then(result => { | |
// }) | |
// } else { | |
// const value = task.value; | |
// arrTask.push(executor.executeTask(task)); | |
// recursiveTask(generator, arrTask); | |
// } | |
// }; | |
// recursiveTask(generator, []); | |
} | |
(async () => { | |
const queue = getQueue(); | |
const executor = new ExecutorExt('bla', queue); | |
executor.start(); | |
await run(executor, queue); | |
executor.stop(); | |
})(); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
this is not working