nodejs函数中的返回值[重复]
Posted
技术标签:
【中文标题】nodejs函数中的返回值[重复]【英文标题】:return value in nodejs function [duplicate] 【发布时间】:2018-07-04 05:28:53 【问题描述】:我是 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】:传递回调函数或使用Promise
来完成。
或者,如果您的 node.js 版本支持,您也可以使用 generator
或 async/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);
);
异步/等待:
var query = function(sql)
return new Promise(function(resolve, reject)
var returnValue = "";
db.query(sql, function(error, rows)
if (error)
returnValue = "";
else
returnValue = rows[0]['url'];
console.log("in function result: " + returnValue);
resolve(returnValue)
);
);
;
var getSlaveURL = async function()
var sqlQuery = "SELECT url FROM `slave` WHERE `id`='2' LIMIT 1";
let result = await query(sqlQuery)
console.log("out function result: " + result);
;
getSlaveURL();
【讨论】:
感谢您的回复,您能帮忙使用 async/await 更新此功能吗? 同理,把db.query
改成promise
,然后await
it.@munyso
请帮我写完整的函数,因为我不知道怎么用async/await写。谢谢!
我使用async/await
更新了函数
亲爱的@Cr,您的解决方案有效。非常感谢!以上是关于nodejs函数中的返回值[重复]的主要内容,如果未能解决你的问题,请参考以下文章