आपकी विधि getWord एसिंक्रोनस है !
तो दूसरा console.log(wordList);
किसी भी परिणाम के वापस आने से पहले प्रिंट किया जाता है (इससे पहले कि आप wordList.push(result);
पर कॉल करें। पहली बार)
इसके अलावा जब से आप getParrotMessage . में db (जो अतुल्यकालिक है) को क्वेरी करते हैं फ़ंक्शन आपको रिटर्न स्टेटमेंट के बजाय कॉलबैक (या प्रॉमिस या जो कुछ भी इस्तेमाल किया जा सकता है) का उपयोग करने की आवश्यकता है।
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);
});
};
अब इसे इस तरह इस्तेमाल करें
getParrotMessage(function(err, words){
// words => ['someword','someword2']
});