所以我在 promise 方面遇到了一些麻烦,我无法弄清楚。 代码很长,但我将稍微简化一下。
基本问题是,getDataSet1AndPostToMysql获取一些数据并将值更新到mysql中,之后,我想要getDataAndPerformAction从mysql中获取一些数据,执行一些操作,然后将一些字段更新到mysql中,然后,我想关闭连接。
如果我只执行 getDataSet1AndPostToMysql 并编写 .then() 来关闭连接,那么一切都会像魅力一样。
问题是,当我将第二个 Promise 函数添加到第一个时,它就不再起作用了。
对此有什么想法吗?
谢谢!!!
function getDataSet1AndPostToMysql(param){
return new Promise((resolve, reject) => {
//perform some actions with data
var sql = "UPDATE urls SET value=1 WHERE data='" + valueX + "'";
connection.query(sql, function (err, result) {
if (err) throw err;
})
resolve();
})
}
function getDataAndPerformAction{
return new Promise ((resolve,reject) => {
//Get data back from mysql
//Do things with data
var sql = "UPDATE urls SET depth="+depth+1+" WHERE url='" + url + "'";
connection.query(sql, function (err, result) {
if (err) throw err;
console.log("update done")
})
resolve();
})
}
getDataSet1AndPostToMysql.then(()=>{
getDataAndPerformAction()
}).then(()=>{
connection.end()
})
最佳答案
您需要在 then
中从 getDataAndPerformAction
返回 Promise,否则 then
仅返回 undefined,然后返回下一个 then
没有什么可等待的。
getDataSet1AndPostToMysql.then(()=>{
return getDataAndPerformAction() // return this
}).then(()=>{
connection.end()
})
您可以通过不使用大括号来简化:
getDataSet1AndPostToMysql.then(()=> getDataAndPerformAction()) // this implicitly returns
.then(()=> connection.end())
关于Javascript Promise 与 Mysql 链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51622328/