Javascript 在nodejs中将回调代码转换为异步代码
我是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)
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.
});