2016-11-09 110 views
0

這是我的node.js項目中的代碼,但我無法訪問connection2的值。我在某處讀到.getConnection是異步函數,所以我無法通過這種方式獲取connection2的值。我如何修改此代碼以正確返回值?如何從這個函數返回值?

var mysql = require('mysql'); 
    var connectionPool = mysql.createPool({ 
     host: 'localhost', 
     user: 'root', 
     password: '', 
     database: 'rockcity_followme' 
    }); 
exports.connExport=function() { 
    var connection2; 
    connectionPool.getConnection(function (err, connection) { 
     connection2=connection; 
    }); 
    return connection2; 
} 

回答

0

此處不能返回連接。它必須是異步的,所以你將回調作爲參數並在有連接時調用回調。

exports.connExport=function(callback) { 
    connectionPool.getConnection(function (err, connection) { 
     callback(connection); 
    }); 
} 

有關節點中異步功能與同步功能的更多信息,請參閱this


當一個函數異步執行任何操作時,它必須始終是異步的。要從另一個模塊使用connExport,它必須異步使用。

var yourModule = require("yourModule"); 
yourModule.connExport(function(connection) { // <-- the callback function 
    // you can use connection here 
}); 
+0

這是我不明白。我應該在哪裏寫/定義回調函數?你能否編輯一下你的答案? –

+0

@VikasKumar我添加了幫助的例子嗎? – afuous

+0

謝謝。它確實有幫助! –