Тема: Callback Hell
Показать сообщение отдельно
  #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)
}


Но проще бывает версию драйвера с промисами подключить...
Или еще проще, современные драйвера позволяют использовать оба подхода (коллбеки и промисы). Соответственно, если не передавать коллбек, вернется промис.
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием