Audaxviator,
но по сути обе функции выполнят свой колбэк после всех синхронных действий текущего тика. Просто process.nextTick оформляет свою задачу как "микротаск" - добавляет в специальную очередь текущего исполняемого "таска" (витка основного событийного цикла), все пункты из очереди выполняются сразу за самим таском, только потом стартует новый таск. А setImmediate сразу ставит отдельный таск. Потому, в принципе неважно что там - nextTick, setImmediate, прочее... - все равно присвоение (из примера) случится после тех действий, которые идут за вызовом foo() |
Не, ну я пытался показать сам принцип, потому что задрала уже тема "ужаса-ужаса асинхронности", и вопросы типа "а почему оно undefined? а куда делось значение?".
Чего тут такого сверхъестественного? А модули для Ноды я всё равно писать не буду, поэтому в совсем-совсем тонкости я и не вникаю, в исходные коды не заглядывал. Асинхронность - это весело и изящно. |
Цитата:
|
Цитата:
|
Цитата:
const {promisify} = reuqire('util') const query = promisify(con.query) isRegistered(bla-bla); async function isRegistered(id) { const result = await query('SELECT * FROM `users` WHERE `userid`= ?', id) console.log('result', result) } Но проще бывает версию драйвера с промисами подключить... Или еще проще, современные драйвера позволяют использовать оба подхода (коллбеки и промисы). Соответственно, если не передавать коллбек, вернется промис. |
Цитата:
Либо для того, кто реально на этом работает - пишет сайты-коды и вот это всё, либо для того - кто сам придумывать не любит или не может. Ни то, ни другое ко мне не относится. |
Часовой пояс GMT +3, время: 13:15. |