Skip to content

Instantly share code, notes, and snippets.

@Lodo4ka
Created September 6, 2019 15:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Lodo4ka/381bd9223f167fa587013bb27ce0a191 to your computer and use it in GitHub Desktop.
Save Lodo4ka/381bd9223f167fa587013bb27ce0a191 to your computer and use it in GitHub Desktop.
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