nodejs async/await 写法

securite 2017-12-15 01:06:02
我想将下面的“回调地狱”改写成优雅的async/await写法。之前在网上找了不少例子,都是自编的异步函数,感觉总是不对。说实话对异步了解不多,看了很多promise,generator之类的解决方案还是无法正确编写出代码,所以求助。

const fs = require('fs');
let fpath = 'E:\\112.txt';

fs.readFile(fpath,function(err,data1){
fs.readFile(fpath,function(err,data2){
fs.readFile(fpath,function(err,data3){
fs.writeFile('E:\\113.txt',data1+'>>>'+data2+'>>>'+data3,function(err){
console.log(err);
});
});
});
});


这是我的写法,提示:Calling an asynchronous function without callback is deprecated.

async function readData(fpath){
const fs = require('fs');
let fs1, fs2, fs3;
try{
fs1 = await fs.readFile(fpath);
fs2 = await fs.readFile(fpath);
fs3 = await fs.readFile(fpath);
await fs.writeFile('E:\\code\\Leap 1B DT2 code\\120\\113.txt', fs1 + fs2 + fs3);
}catch(e){
console.error(e.message);
}
console.log(fs3);
}
readData(fpath);
...全文
492 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
securite 2018-01-07
  • 打赏
  • 举报
回复
好吧,这么长时间都没人回复,我已经找到了答案。 nodejs的async/await写法建立在promise对象上,所以只需要对异步函数做改造即可。nodejs中util模块提供了一个promisify的函数,可以使用这个改造函数。例如: const fs = require('fs'); const util = require('util'); const readFile = util.promisify(fs.readFile);

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧