Skip to content

Commit 070e4ec

Browse files
committed
Add tasks
1 parent c06c7eb commit 070e4ec

File tree

1 file changed

+42
-2
lines changed

1 file changed

+42
-2
lines changed

README.md

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,42 @@
1-
# Dequeue
2-
Stack, Queue and Dequeue
1+
# Stack, Queue and Dequeue
2+
3+
Задания (на выбор):
4+
- Реализовать стек, очередь и дэк на прототипах и замыканиях
5+
- Реализовать стек через 2 класса (Stack + Element), то же и с очередью и дэком
6+
- Добавить протокол iterable
7+
- см. про `next()` и [`Symbol.iterator`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Iteration_protocols)
8+
- Сделать методы и свойства:
9+
- Клонирование `.clone():list`
10+
- Очистка `.clear()`
11+
- Кол-во элементов `.size`
12+
- Реализовать события (чтоб можно было на них подписываться, но чтоб cнаружи
13+
нельзя было делать`emit`):
14+
- `.on('push', (element, dequeue) => {})`
15+
- `.on('pop', (element, dequeue) => {})`
16+
- `.on('unshift', (element, dequeue) => {})`
17+
- `.on('shift', (element, dequeue) => {})`
18+
- Когда дэк опустошен `.on('drain', (dequeue) => {})`
19+
- Взять односвязный или двусвязный список и унаследовать от него
20+
стек, очередь и дэк
21+
- Взять односвязный или двусвязный список и на базе их построить
22+
стек, очередь и дэк через механизм агрегированяи (делегирования)
23+
- Добавить в очерез таймаут ожидания в очереди `queue.timeout(msec)`
24+
- Добавить в очередь работу с приоритетами (упорядочить очередь по приоритету)
25+
- Реализовать очередь с приоритетами на базе массива и дерева
26+
- Асинхронные аналоги
27+
- `.pop((data) => {})`
28+
- `.shift((data) => {})`
29+
- аналоги на Promise
30+
31+
Построение цепочек из очередей:
32+
```js
33+
const incoming = new Queue();
34+
const calculating = new Queue();
35+
const preparing = new Queue();
36+
37+
incoming.process(item => item).pipe(calculating);
38+
calculating.process(item => item).pipe(preparing);
39+
preparing.process(item => {
40+
console.log(item);
41+
});
42+
```

0 commit comments

Comments
 (0)