Javascript 在nodejs中将回调代码转换为异步代码

Javascript 在nodejs中将回调代码转换为异步代码,javascript,node.js,asynchronous,callback,Javascript,Node.js,Asynchronous,Callback,我是javascript和nodejs新手。我想在异步函数中转换回调函数。有人能帮我举个例子吗 例如: exports.list = function(req, res){ req.getConnection(function(err,connection){ var query = connection.query('SELECT * FROM customer',function(err,rows) { if(err)

我是javascript和nodejs新手。我想在异步函数中转换回调函数。有人能帮我举个例子吗

例如:

exports.list = function(req, res){

  req.getConnection(function(err,connection){

        var query = connection.query('SELECT * FROM customer',function(err,rows)
        {

            if(err)
                console.log("Error Selecting : %s ",err );
            res.send(rows);

         });

         //console.log(query.sql);
    });

};
是列出数据库中所有用户的回调。我想使用async.paralel、async.series等异步模块的函数来实现这一点……

您可以试试Bluebird

是这样工作的

var fs = require("fs");
Promise.promisifyAll(fs);
// Now you can use fs as if it was designed to use bluebird promises from the beginning

fs.readFileAsync("file.js", "utf8").then(...)
编辑:

我最近的做法有些不同:

const { promisify } = require('util');
const { readFile } = require('fs');
const asyncReadFile = promisify(readFile);

asyncReadFile('foo.txt').then(data => {})

// or using async/await

async function doSomething () {
  const data = await asyncReadFile('foo.txt');
}
原始答复:

您可以使用util.promisify,因为它是自v8.0.0以来Node.js的原生版本。完整的文档可用,但简而言之,它如下所示:

const util = require("util");
const fs = require("fs");

util.promisify(fs.readFile)("foo.txt").then(data => {
  // Do something with data.
});
或使用异步/等待:


请发布一个示例,您不能将任何函数转换为异步函数。您可以安排它稍后运行,但如果它是同步的,则不能使其异步。只有当你发布有问题的代码时,我们才能真正帮助你。关于代码的问题应包括问题中的相关代码。sry不包括代码。我编辑了我的问题。你能帮忙吗@jfriend00FYI,Promissions是处理和协调异步操作的现代方式,而不是异步库。你能建议我不使用Promissions吗?你建议用什么来代替Promissions@vaibhavkaushik?@vaibhavkaushik你可以使用观察者,您不想使用promise的任何原因。@vaibhavkaushik异步函数使用promise或Async/await,它们基本上是一样的。正如我所说,我对javascript和node是新手,还没有弄清楚promises的概念@拉詹索夫1
async function readFileAsPromise() {
  return await util.promisify(fs.readFile)("foo.txt");
}

readFileAsPromise().then(data => {
  // Do something with data.
});