Спасибо за очень подробную реализацию. Я стараюсь пользоваться синхронными методами. Библиотека apt.js это просто обвязка нескольких программ(dpkg, apt, add-apt-repository). Будет неприятно если эти программы начнут одновременно работать.
Асинхронный - не значит параллельный. В данном случае хоть и выполняется внешний процесс, вызов колбэка становится в очередь.
Написание именно неблокирующего асинхронного кода - вся суть ноды. На самом деле, нода однопоточна.
Просто асинхронный подход поначалу сильно ломает мозг.
В конкретном случае, поскольку у вас появляется ожидание события, вам нужно просто задать правильную последовательность вызовов функций, к примеру, разместив код по работе с apt в функции AptInstalls(boostTags), где boostTags - параметр с тэгами, после чего сделать ее вызов из колбэка OnResponse, написав вместо console.log(tags); ее вызов - AptInstalls(tags). Тогда по событию получения данных начнется установка.
Это просто пример, вы можете организовывать код, как вам удобно. Можно использовать промисы, генераторы или даже функционал из ECMAScript 7, такой как async/await (правда, его еще не реализовали, придется использовать nodent или babel для "компиляции").
Первое, что нашёл: git ls-remote, но должно быть что-то более очевидное.
Upd: git show-ref вот.
Могу порекомендовать (для общего развития) - https://git-scm.com/book/ru/v2.
git ls-remote https://github.com/boostorg/boost.git
Работает.Спасибо за очень подробную реализацию. Я стараюсь пользоваться синхронными методами. Библиотека apt.js это просто обвязка нескольких программ(dpkg, apt, add-apt-repository). Будет неприятно если эти программы начнут одновременно работать.
Асинхронный - не значит параллельный. В данном случае хоть и выполняется внешний процесс, вызов колбэка становится в очередь.
Написание именно неблокирующего асинхронного кода - вся суть ноды. На самом деле, нода однопоточна.
Просто асинхронный подход поначалу сильно ломает мозг.
В конкретном случае, поскольку у вас появляется ожидание события, вам нужно просто задать правильную последовательность вызовов функций, к примеру, разместив код по работе с apt в функции AptInstalls(boostTags), где boostTags - параметр с тэгами, после чего сделать ее вызов из колбэка OnResponse, написав вместо console.log(tags); ее вызов - AptInstalls(tags). Тогда по событию получения данных начнется установка.
Это просто пример, вы можете организовывать код, как вам удобно. Можно использовать промисы, генераторы или даже функционал из ECMAScript 7, такой как async/await (правда, его еще не реализовали, придется использовать nodent или babel для "компиляции").
Отправить комментарий