所以我对一个承诺有点困难,我想不出来。代码很长,但我要把它简化一点。
基本的问题是,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()
})
2条答案
按热度按时间t1qtbnec1#
你需要回报我的承诺
getDataAndPerformAction
在then
否则then
只返回未定义,然后返回下一个then
没有什么可等的。不使用大括号可以简化:
cbjzeqam2#
您需要将result和err传递给promise,并处理出现错误的情况。