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

时间:2018-03-26 04:26:13

标签: 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)
                console.log("Error Selecting : %s ",err );
            res.send(rows);

         });

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

};

是列出数据库中所有用户的回调。我想使用像async.paralel()async.series()等异步模块的功能来做这件事....

2 个答案:

答案 0 :(得分:0)

您可以尝试Bluebird http://bluebirdjs.com/docs/getting-started.html

像这样工作

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(...)

答案 1 :(得分:0)

您可以使用util.promisify,它是自v8.0.0以来Node.js的原生代码。完整文档可用here,但简而言之,它看起来像这样:

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

util.promisify(fs.readFile)("foo.txt").then(data => {
  // Do something with data.
});

async/await

async function readFileAsPromise() {
  return await util.promisify(fs.readFile)("foo.txt");
}

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