Phương thức getWord của bạn là không đồng bộ !
Vì vậy, console.log(wordList);
thứ hai được in trước khi trả về bất kỳ kết quả nào (trước cả khi bạn gọi wordList.push(result);
lần đầu tiên)
Cũng vì bạn truy vấn db (không đồng bộ) trong getParrotMessage bạn cần sử dụng hàm callback (hoặc Promise hoặc bất kỳ thứ gì khác có thể được sử dụng) thay vì câu lệnh return.
function getParrotMessage(callback) {
getWord('result', function (err, result) {
if(err || !result.length) return callback('error or no results');
// since result is array of objects [{word: 'someword'},{word: 'someword2'}] let's remap it
result = result.map(obj => obj.word);
// result should now look like ['someword','someword2']
// return it
callback(null, result);
});
}
function getWord(word, callback) {
con.query('SELECT * FROM word_table', function(err, rows) {
if(err) return callback(err);
callback(null, rows);
});
};
bây giờ sử dụng nó như thế này
getParrotMessage(function(err, words){
// words => ['someword','someword2']
});