利用async和await异步操作解决node.js里面fs模块异步读写,同步结果的问题
async await 解决异步问题,这两个关键字是es7提出的,所以测试,node和浏览器版本提高一些
async await 操作基于promise实现的
async await这两个关键字是一起使用,分开使用会报错
await 后面只能跟promise对象
不熟悉的promise异步操作的朋友,去看看我promise那边文章
Promise 解决多层嵌套,回调地狱
什么叫回调地狱
写一个实例,就是恶心的多层欠嵌套
function a(){ function b(){ function c(){ } } }
这样的代码看着就不容易维护,性能底下
下面我们看看fs模块解决异步请求,同步结果的问题
//es7 let fs=require('fs');
function read(url) {
//new Promise 需要传入一个executor 执行器
//executor需要传入两个函数 resolve reject
return new Promise((resolve,reject)=>{
//异步读取文件
fs.readFile(url,'utf8',function (err,data) {
if(err){
reject(err)
}else{
resolve(data);
}
})
})
}; //async await 解决异步问题,基于promise
//async await这两个关键字一起使用
//await 后面只能跟promise对象
async function getData(){
try{
//Promise.all()并发读取
let result =await Promise.all([read('name.txt'),read('age.txt')]);
console.log(result);
}catch (e){
console.log(e);
}
}
getData(); //Promise 解决多层嵌套,回调地狱
// 解决异步请求,同步结果的问题
利用async和await异步操作解决node.js里面fs模块异步读写,同步结果的问题的更多相关文章
- 解决Node.js调用fs.renameSync报错的问题(Error: EXDEV, cross-device link not permitted)
2014-08-23 今天开始学习Node.js,在写一个文件上传的功能时候,调用fs.renameSync方法错误 出错代码所在如下: function upload(response,reques ...
- 解决node.js使用fs读取文件出错
今天配接口,使用fs模块读取json出现了错误'no such file or directory',然后经查终于解决,特此记录. 使用nodejs的fs模块读取文件时习惯用相对路径,但是运行的时 ...
- Node.js 文件系统fs模块
Node.js 文件系统封装在 fs 模块是中,它提供了文件的读取.写入.更名.删除.遍历目录.链接等POSIX 文件系统操作. 与其他模块不同的是,fs 模块中所有的操作都提供了异步的和 同步的两个 ...
- 在nginx服务器里面搭建好node.js本地服务器后,利用Node.js的FS模块,实现简单数据的写入和读取
先在server.js里面引入: var fs = require('fs'); 然后写入 // 往writeme.txt文件 写入一些内容 fs.writeFile('./writem ...
- node.js之fs模块
一.fs模块的mkdir函数,创建文件夹 var http = require("http"); var fs = require("fs"); var ser ...
- node.js的fs核心模块读写文件操作 -----由浅入深
node.js 里fs模块 常用的功能 实现文件的读写 目录的操作 - 同步和异步共存 ,有异步不用同步 - fs.readFile 都不能读取比运行内存大的文件,如果文件偏大也不会使用readFil ...
- 利用Node.js的Net模块实现一个命令行多人聊天室
1.net模块基本API 要使用Node.js的net模块实现一个命令行聊天室,就必须先了解NET模块的API使用.NET模块API分为两大类:Server和Socket类.工厂方法. Server类 ...
- 第十节:利用async和await简化异步编程模式的几种写法
一. async和await简介 PS:简介 1. async和await这两个关键字是为了简化异步编程模型而诞生的,使的异步编程跟简洁,它本身并不创建新线程,但在该方法内部开启多线程,则另算. 2. ...
- 浅析 Node.js 的 vm 模块以及运行不信任代码
在一些系统中,我们希望给用户提供插入自定义逻辑的能力,除了 RPC 和 REST 之外,运行客户提供的代码也是比较常用的方法,好处是可以极大地减少在网络上的耗时.JavaScript 是一种非常流行而 ...
随机推荐
- [Swift]经典解题思路:联合查找Union Find
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- mysql 根据总分排名
mysql 根据总分排名 SELECT t.*, @rank := @rank + AS rank FROM ( SELECT @rank := ) r, ( SELECT tas.id, tas.t ...
- (数论 欧拉筛法)51NOD 1106 质数检测
给出N个正整数,检测每个数是否为质数.如果是,输出"Yes",否则输出"No". Input 第1行:一个数N,表示正整数的数量.(1 <= N &l ...
- LuoguP3398 仓鼠找sugar
竞赛课想找一道水一点的tarjan题,看看这么久没做题手感有没有掉... 结果这题貌似不是tarjan啊...应该是LCA...假的标签!! 一遍过样例+一遍AC祭(好吧这么水的题也没啥好开心的) 大 ...
- 转载使用 ContentObsever 拦截短信,获取短信内容
在一些应用上,比如手机银行,QQ,微信等,很多时候我们都需要通过发送验证码到手机上,然后把验证码填上去,然后才能成功地继续去做下面一步事情. 而如果每次我们都要离开当前界面,然后去查收短信,记住验证码 ...
- HTML基础2——综合案例3——创建考试报名表格
<html> <head> <title></title> </head> <body> <table width=&qu ...
- win7任务计划提示”该任务映像已损坏或已篡改“怎么处理
https://jingyan.baidu.com/article/e75057f2038e2febc91a8915.html 在命令行窗口(cmd)执行命令:schtasks /query /v ...
- sublime text 3 使用技巧
一.下载 官网下载合适的版本(http://www.sublimetext.com/3) 二.破解 执行 Help->Enter license 粘贴你的License代码 ----- BEGI ...
- MySQL性能优化必备25条
1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的.当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一 ...
- Java线程处理
Java线程处理 创建线程 继承Thread类 public class TestThread extends Thread{ public void run(){ System.out.printl ...