javascript - Node.js 中的异步查询、等待和 Promise

标签 javascript mysql node.js express asynchronous

我很难在 Node.js 中链接函数,我无法让接收者等待。 promise 不应该是异步的,因此适合这样的任务吗?

const promise = new Promise((resolve, reject) => {
  var input = 'SELECT * FROM ideas;';
  connection.query(input, (err, results) => {
    if(err) {
      console.log(err);
      reject();
    } else {
      console.log('success');
      results = JSON.stringify(results);
      console.log(results);
      resolve();
      return results;
    }
  })
});

promise.then(function(results) {
  results = JSON.parse(results);
  console.log(results);
});

我希望有人知道我在这里缺少什么并可以提供帮助!

最佳答案

You only need to add results to resolve and err to reject.

例如,您可以使用下面的代码:

const promise = new Promise((resolve, reject) => {
  var input = 'SELECT * FROM ideas;';
  connection.query(input, (err, results) => {
    if(err) {
      reject(err);
    } else {
      console.log('success');
      results = JSON.stringify(results);
      console.log(results);
      resolve(results);
    }
  })
});

promise.then(function(results) {
  results = JSON.parse(results);
  console.log(results);
}).catch(error => {
  console.log(error);
})

关于javascript - Node.js 中的异步查询、等待和 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60006551/

相关文章:

javascript - 如何在nodejs中使用express get route从url中提取页面名称和authToken?

javascript - 在移动设备的容器中点击时在随机位置显示单词

php - 1452 无法添加或更新子行 : a foreign key constraint fails

php-node Node Express 找不到模块

javascript - 检测 VSCode 中未使用的 JavaScript 方法

javascript - ObservableArray 抛出 undefined 不是 Knockoutjs 中的函数

javascript - 一旦箭与目标相撞,我该如何让箭停下来?

mysql - native 查询executeUpdate似乎在Spring事务中提交数据

mysql - 从多对多关系中获取数据

node.js - 在多核服务器上启动多个 Node 实例的正确方法是什么?