nodejs函数中的返回值

时间:2018-01-25 02:46:47

标签: node.js nodes node-modules async.js

我是nodejs的新手,当我编写一个函数时,它不能用于返回函数中的值。我从mysql获取结果然后返回到函数。我知道原因因为nodejs默认是异步的。我该如何解决我的问题?这是我的源代码:

function getSlaveURL() {
var sqlQuery = "SELECT url FROM `slave` WHERE `id`='2' LIMIT 1";
var returnValue = "";
db.query(sqlQuery, function (error, rows) {
    if (error) {
        returnValue = "";
    } else {
        returnValue = rows[0]['url'];
        console.log("in function result: " + returnValue);
    }
});
return returnValue;
}
console.log("out function result: " + getSlaveURL());

=>结果:

输出功能结果:

功能结果中的

http://localhost/mynodejs_slave/

请帮我解决这个问题。 谢谢!

1 个答案:

答案 0 :(得分:1)

传递回调函数或使用len(thickness)执行此操作。 或者,如果您的node.js版本支持,您也可以使用Promisegenerator。     承诺:

async/await

异步/ AWAIT:

var getSlaveURL = new Promise(function(resolve, reject) {
    var sqlQuery = "SELECT url FROM `slave` WHERE `id`='2' LIMIT 1";
    var returnValue = "";
    db.query(sqlQuery, function(error, rows) {
        if (error) {
            returnValue = "";
        } else {
            returnValue = rows[0]['url'];
            console.log("in function result: " + returnValue);
        }
        resolve(returnValue)
    });
});

getSlaveURL.then(function(returnValue) {
    console.log("out function result: " + returnValue);
});