Аура у Ауры или "главное, сделать и что бы работало"

Ikemefula Ikemefula
Дисклеймер — некоторые могут осознать себя причастными. Сочувствую.

Что бы не растекаться мыслью по древу, покажу интересный паттерн. Контекст, в котором этот паттерн встретился — консольная утилита, задача которой это несложные упражнения с файлами для сборки некоторых типовых проектов.
Девиз, под которым велась и ведётся разработка "главное, сделать и что бы работало"

Код встретился мне год назад. Хотел тогда же по горячим следам написать подробный разбор, но решил себя поберечь. Вот, спустя год, версия с минимальным количеством эмоций. Паттерн максимально облегчен и упрощен, для легкости восприятия:

// где то в дебрях библиотеки

import fs from 'fs-extra';

async coolFunction() {
 //  пропущено несколько страниц кода

 const a = await new Promise((resolve, reject) => {
    fs.read(file, ()=> {
         fs.copy(file, file2)
          .then(() => { /* много строчек */  }) // и так несколько раз подряд
          .then(() => { fs.copySync(file, file2);  }) // !!!!!
          .then(() => { /* много строчек */  }) // и так несколько раз подряд
          .then((x) => { resolve(x); })
    })
  
 }); 

 //  пропущено несколько страниц кода
}


Что имеем ?
async/await — ✓
promises — ✓
callback — ✓
*Sync — ✓
Вот она, мультипарадигма, в чистейшем виде.


В принципе, недостаток ровно один — не хватает только RX. Некоторое упущение, которое, возможно, восполнится в будущем.
markthecoder
markthecoder
18.04.2019 12:20
Здравствуйте, Ikemefula, Вы писали:

I>Дисклеймер — некоторые могут осознать себя причастными. Сочувствую.


I>Что бы не растекаться мыслью по древу, покажу интересный паттерн. Контекст, в котором этот паттерн встретился — консольная утилита, задача которой это несложные упражнения с файлами для сборки некоторых типовых проектов.

I>Девиз, под которым велась и ведётся разработка "главное, сделать и что бы работало"

I>Код встретился мне год назад. Хотел тогда же по горячим следам написать подробный разбор, но решил себя поберечь. Вот, спустя год, версия с минимальным количеством эмоций. Паттерн максимально облегчен и упрощен, для легкости восприятия:


I>
I>// где то в дебрях библиотеки

I>import fs from 'fs-extra';

I>async coolFunction() {
I> //  пропущено несколько страниц кода

I> const a = await new Promise((resolve, reject) => {
I>    fs.read(file, ()=> {
I>         fs.copy(file, file2)
I>          .then(() => { /* много строчек */  }) // и так несколько раз подряд
I>          .then(() => { fs.copySync(file, file2);  }) // !!!!!
I>          .then(() => { /* много строчек */  }) // и так несколько раз подряд
I>          .then((x) => { resolve(x); })
I>    })
  
I> }); 

I> //  пропущено несколько страниц кода
I>}

I>


I>Что имеем ?

I>async/await — ✓
I>promises — ✓
I>callback — ✓
I>*Sync — ✓
I>Вот она, мультипарадигма, в чистейшем виде.


I>В принципе, недостаток ровно один — не хватает только RX. Некоторое упущение, которое, возможно, восполнится в будущем.



Не совсем понимаю, в чем проблема кода? Автор неоссилятор, который не может переориентироваться на новые и удобные технологии? Будущее наступило, пора проснуться.
Ikemefula
Ikemefula
18.04.2019 12:26
Здравствуйте, markthecoder, Вы писали:

I>>В принципе, недостаток ровно один — не хватает только RX. Некоторое упущение, которое, возможно, восполнится в будущем.


M>Не совсем понимаю, в чем проблема кода? Автор неоссилятор, который не может переориентироваться на новые и удобные технологии? Будущее наступило, пора проснуться.


Проблема в том, что в одном методе заюзали всё, кроме RX. Вот надо его добавить, тогда будет полное покрытие. Мультипарадигма многозадачности
markthecoder
markthecoder
18.04.2019 12:24
Здравствуйте, Ikemefula, Вы писали:

I>Дисклеймер — некоторые могут осознать себя причастными. Сочувствую.


I>Что бы не растекаться мыслью по древу, покажу интересный паттерн. Контекст, в котором этот паттерн встретился — консольная утилита, задача которой это несложные упражнения с файлами для сборки некоторых типовых проектов.

I>Девиз, под которым велась и ведётся разработка "главное, сделать и что бы работало"

I>Код встретился мне год назад. Хотел тогда же по горячим следам написать подробный разбор, но решил себя поберечь. Вот, спустя год, версия с минимальным количеством эмоций. Паттерн максимально облегчен и упрощен, для легкости восприятия:


I>
I>// где то в дебрях библиотеки

I>import fs from 'fs-extra';

I>async coolFunction() {
I> //  пропущено несколько страниц кода

I> const a = await new Promise((resolve, reject) => {
I>    fs.read(file, ()=> {
I>         fs.copy(file, file2)
I>          .then(() => { /* много строчек */  }) // и так несколько раз подряд
I>          .then(() => { fs.copySync(file, file2);  }) // !!!!!
I>          .then(() => { /* много строчек */  }) // и так несколько раз подряд
I>          .then((x) => { resolve(x); })
I>    })
  
I> }); 

I> //  пропущено несколько страниц кода
I>}

I>


I>Что имеем ?

I>async/await — ✓
I>promises — ✓
I>callback — ✓
I>*Sync — ✓
I>Вот она, мультипарадигма, в чистейшем виде.


I>В принципе, недостаток ровно один — не хватает только RX. Некоторое упущение, которое, возможно, восполнится в будущем.


Я перечитал статью и извиняюсь перед автором, все по делу. Снимаю шляпу