Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 19.02.2018, 17:45
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Audaxviator,
но по сути обе функции выполнят свой колбэк после всех синхронных действий текущего тика.
Просто process.nextTick оформляет свою задачу как "микротаск" - добавляет в специальную очередь текущего исполняемого "таска" (витка основного событийного цикла), все пункты из очереди выполняются сразу за самим таском, только потом стартует новый таск.
А setImmediate сразу ставит отдельный таск.

Потому, в принципе неважно что там - nextTick, setImmediate, прочее... - все равно присвоение (из примера) случится после тех действий, которые идут за вызовом foo()

Последний раз редактировалось Alexandroppolus, 19.02.2018 в 17:49.
Ответить с цитированием
  #12 (permalink)  
Старый 19.02.2018, 18:11
Профессор
Отправить личное сообщение для Audaxviator Посмотреть профиль Найти все сообщения от Audaxviator
 
Регистрация: 28.04.2017
Сообщений: 214

Не, ну я пытался показать сам принцип, потому что задрала уже тема "ужаса-ужаса асинхронности", и вопросы типа "а почему оно undefined? а куда делось значение?".
Чего тут такого сверхъестественного?
А модули для Ноды я всё равно писать не буду, поэтому в совсем-совсем тонкости я и не вникаю, в исходные коды не заглядывал. Асинхронность - это весело и изящно.
Ответить с цитированием
  #13 (permalink)  
Старый 20.02.2018, 00:30
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

Сообщение от Валерия_05 Посмотреть сообщение
А, всё я поняла. Это NodeJS там наверное всё иначе работает.
Извините.
Ставлю рубь против копейки: всё ещё будет. Появится javascript аналог jdbc, разумеется "супер секурный", и будут все тягать базу прям с клиента. И под это дело конечно ещё вагончик кривых технологий подвезут, с прицепом из дырок и атак на отказ в обслуживании.)
__________________
29375, 35
Ответить с цитированием
  #14 (permalink)  
Старый 20.02.2018, 01:19
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Сообщение от Aetae
Ставлю рубь против копейки: всё ещё будет. Появится javascript аналог jdbc, разумеется "супер секурный", и будут все тягать базу прям с клиента.
Такое даже иногда бывает, если на сайте нет защиты от sql инъекций (да, бывает и в наши дни). Пишется "пользовательский jdbc"
Ответить с цитированием
  #15 (permalink)  
Старый 25.02.2018, 12:36
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Audaxviator Посмотреть сообщение
isRegistered(bla-bla);

async function isRegistered(id) {
  var sel_query = await new Promise( resolve => {
    con.query('SELECT * FROM `users` WHERE `userid`= ?', id, function(error, results) {
      if(err) console.error(err);
      resolve(results);
    });
  }).then( result => {
    return result;
  };
  if(sel_query.length != 0) {
    console.log(1, sel_query);
  } else {
    console.log(0);
  }
}
как бы это вам сказать... Все придумано до нас в данном случае -- https://nodejs.org/dist/latest-v8.x/...isify_original

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)
}


Но проще бывает версию драйвера с промисами подключить...
Или еще проще, современные драйвера позволяют использовать оба подхода (коллбеки и промисы). Соответственно, если не передавать коллбек, вернется промис.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #16 (permalink)  
Старый 25.02.2018, 13:02
Профессор
Отправить личное сообщение для Audaxviator Посмотреть профиль Найти все сообщения от Audaxviator
 
Регистрация: 28.04.2017
Сообщений: 214

Сообщение от nerv_ Посмотреть сообщение
Все придумано до нас в данном случае
Для кого придумано?
Либо для того, кто реально на этом работает - пишет сайты-коды и вот это всё, либо для того - кто сам придумывать не любит или не может.
Ни то, ни другое ко мне не относится.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли так использовать callback функции? Denwf Node.JS 2 14.03.2017 10:20
Работы с callback функциями jenek_34 Общие вопросы Javascript 13 25.03.2015 12:03
Работа с textarea Rompo Events/DOM/Window 14 16.12.2013 17:41
Callback работает не так как я от него жду singaporian Общие вопросы Javascript 3 14.08.2013 00:42
В callback функции теряется контекст. Как это обойти? xintrea AJAX и COMET 4 02.06.2013 11:40