gpt4 book ai didi

node.js - Node js mysqlquery 尝试添加 .then

转载 作者:太空宇宙 更新时间:2023-11-04 00:00:32 25 4
gpt4 key购买 nike

目前我正在使用 Node.js 开发一个项目。具体来说,我使用 adobe CEP 的 soem 样板,它允许您在程序的面板中运行一些 js。代码中有以下代码可以正常工作。

mysqlConn.query(query, function(err, result) {
do something with error and result})

当执行此函数时,它会给我一个错误或结果,具体取决于是否有数据或存在问题等。我需要做的是在执行此函数后运行另一个函数并给出结果。我对 promise 的了解是有限的(即使我已经广泛阅读并完成了大量教程)。以我有限的知识,我假设 mysqlConn.query 返回一个 promise 。所以我假设我可以这样做:

mysqlConn.query(query, function(err, result) {
do something with error and result})
.then(console.log('anything here?'));

这会记录到控制台“这里有什么吗?”但它也在控制台中给了我这个错误。

Uncaught TypeError: mysqlConn.query(...).then is not a function

知道我做错了什么或者如何才能达到预期的结果吗?

最佳答案

这表明mysqlConn.query方法不返回Promise

相反,您需要“promisify”该方法,以便可以使用 .then() 和 friend 来更改它:

const myFunc = new Promise((resolve, reject) => {
return mysqlConn.query(query, function(err, result) {
if (err) reject(err);
return resolve(result);
});
});

现在我们有了 myFunc,一个基于 Promise 的接口(interface),包装了基于回调的 query 函数。我们可以像这样使用它:

return myFunc()
.then((result) => { ... }) // result will be the result of the query
.catch((err) => { .. } ) // err from the query as well

这也可以通过稍微复杂一点的方式来实现 other tools ,但我强烈建议您先了解这个示例。

关于node.js - Node js mysqlquery 尝试添加 .then,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54913726/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com