Javascript Promise 与 Mysql 链接

标签 javascript mysql node.js promise

所以我在 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/

相关文章:

javascript - jQuery 菜单 - 在调整大小时将一个 div 附加到另一个 div

javascript - 自定义默认代码后不显示 Facebook 注销按钮

php - 将庞大的数据库导入本地服务器

node.js - “无法找到该编队”heroku 部署错误

node.js - nodejs连接找不到静态

arrays - 使用 Request 模块发布数组/对象

javascript - 我正在尝试使用 Kineticjs 为我的 Sprite 动画添加计时

javascript - 如何转义 RegExp 对象中使用的字符串

c++ - 链接 mysqlpp_d.lib 的多个问题

java - 如何执行 now() 查询(MYSQL)?