sash

ответов0 / помог0

Как вернуть результат из функции

1679572748
Привет. Делаю чат на socket.io, надо вывести последние 10 сообщений. Не знаю как чтото вернуть из функции, которую написал

var Tasks = {
    list: function() {
        return pool.getConnection(function(err, connection) {
    connection.query('SELECT * FROM `chat` order by `id` desc limit 10', function (error, results, fields) {
        connection.release();
        if (error) throw error;
        console.log(results) // есть массив
        return results;
      });
    });
},
Я уже где только ретурн не ставил, undefined всегда возвращает.. Прошу помочь
muxahuk1214
ответов4 / помог4
1679573002
асинхронную операцию нельзя вернуть обычным ретурном.. ассинхронные аперации можно вернуть, передав их в колбэк.

function list(callback) {
  pool.getConnection(function(err, connection) {
    connection.query('SELECT * FROM `chat` order by `id` desc limit 10', function (error, results, fields) {
        connection.release();
        if (error) callback(error);
        callback(null, results);
      });
    });
}
использовать можно вот так:

list(function(err, data) {
  if(err) return do_something_with_error(error);
  console.log(data);
  // continue code
})
Вам стоит поизучать ассинхронный js, принцип его работы и т.п. + Promise посмотрите что такое.
sashвлепить жирный лайк
sash
ответов0 / помог0
1679573122
muxahuk1214, огромное спасибо После пыха нода - это для меня кОшмар, еле продираюсь через эти дебри.. Пишу чат по партзаданию
влепить жирный лайк
Сначала вход
A B i U S JS PHP HTML CSS SQL C C++ C# PYTHON JAVA
Для входа только имэйл или имя и апроль
Можно сменить аватар
Имэйл Ваше имя
Пароль