2016-04-09 105 views
0

對方回答似乎在暗示這應該工作(所以不重複):不能回調獲得價值 - JavaScript的

我想能夠使用結果對象的功能之外。我使用了回調,但是我仍然有問題。

exports.getArray = function(query, callback) { 
    connection.query('SELECT ' + query + ' FROM table', function(err, result) { 
     if (!err) { 
      var array = []; 
      for (var i = 0; i < result.length; i++) { 
       array.push({ 
        id: result[i].id, 
       }); 
      } 
      callback(array); 
      console.log('Retrieved Data'); 
     } else 
      console.log('Error while retrieving data.'); 
    }); 
} 

在另一個文件

​​

日誌:

[{ 
    id: 71, 
    author: 'catnip' 
}, { 
    id: 78, 
    author: 'cup49' 
}] 
+2

這句話說'console.log(data); //輸出[]'立即運行,它不會等待回調函數 –

+0

將這個'data.concat(result);'改爲'data = result;' –

+1

_「另一個答案似乎表明這應該工作不是重複的)「 - - 你還在談論什麼其他答案? – Xufox

回答

-1

使用

data = result; 

data = data.concat(result); 

concat方法返回一個新的數組。它不會修改它被調用的數組。

+0

這不是問題所在。 – Andy

+0

不幸的是我已經在使用data = result; – user1212520

+0

在您的回調函數中移動'console.log(data);',就像上面提到的mparnisari一樣,這樣它纔會在得到結果後執行 – benzarras