Здравствуйте, vsb, Вы писали:
vsb>Здравствуйте, sharez, Вы писали:
S>>Тут welcome to callback hell — я так и не понял, как ловить exception'ы в коллбеках или как вызвать асинхронную функцию внутри синхронной (иногда коллбек в чужом API должен сразу синхронно вернуть результат, а вам надо дернуть URL — и приехали). Удобочитаемость кода вообще на нуле. mysqlQuery(sql, () => { your_code }); А теперь представьте вложенные query.
vsb>Советую разобраться с асинхронными функциями. async/await решают все проблемы коллбеков. А асинхронную функцию синхронно нельзя дёрнуть по определению и коллбеки тебе тут никак не помогут. Впрочем это и хорошо, в однопоточном движке блокировать поток не к добру.
Да там всё можно, но геморрой страшный.
Написать цикл:
for (let i=0; i<10; i++)
mysqlQuery("INSERT ... i ... ");
если mysqlQuery работает асинхронно и даёт коллбек — не так очевидно, как может показаться. Обработка ошибок будет тем ещё квестом (и лапшекод-ревью). С учетом отсутствия Checked Exceptions — потенциально ненадежный код с забытыми проверками.
Кроме того, если это всё внутри функции-коллбека, которая должна немедленно вернуть true/false — то сразу стоп.
Такое возможно во всех языках, где подобные вызовы синхронные, но, кажется, совершенно невозможны в JS/TS.
Спойлер: конкретно для mysqlQuery в NPM есть решение, вызывающее нативный код для синхронных mysql queries, но местами глючит.
Впрочем, деление на асинхронные/синхронные функции там, где они всё же есть, внутри всяких fs-extra, тоже красоты не добавлют (мягко говоря). Я про mkdir(callback)/mkdirSync().
Ах да, половина библиотек используют промайсы, половина — обычные коллбеки, а есть либы, которые их миксуют (!).
Это всё просто крик души

Я жду-недождусь, когда мой кешфлоу будет достаточным для найма программиста на фулл-тайм. В принципе, инструментарий криво-косо позволяет добиться целей (колотить бабло), но удовольствия как программисту это всё не доставляет ни капли. Т. е. постоянно возникает желание заблекбоксить программирование на JS/TS целиком, переместившись на уровень составления алгоритма для человеков-программитстов