利用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 是一种非常流行而 ...
随机推荐
- 无线网络发射选址 2014年NOIP全国联赛提高组(二维前缀和)
P2038 无线网络发射器选址 题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129 条东西向街道和129 条南 ...
- P3222 [HNOI2012]射箭
传送门 黄学长的代码好清楚啊--大概搞明白半平面交是个什么玩意儿了-- 设抛物线 \[y=ax^2+bx\] 则 \[y1<=ax1^2+bx1<=y2\] \[ax1^2+bx1> ...
- 洛谷 P1045 麦森数
题目描述 形如2^{P}-1的素数称为麦森数,这时P一定也是个素数.但反过来不一定,即如果P是个素数,2^{P}-1不一定也是素数.到1998年底,人们已找到了37个麦森数.最大的一个是P=30213 ...
- 洛谷 P3378 【模板】堆(小根堆)
题目描述 如题,初始小根堆为空,我们需要支持以下3种操作: 操作1: 1 x 表示将x插入到堆中 操作2: 2 输出该小根堆内的最小数 操作3: 3 删除该小根堆内的最小数 输入输出格式 输入格式: ...
- sublime 3 最新注册码
http://9iphp.com/web/html/sublime-text-3-license-key.html
- 6.12---Swagger中paramType---swagger的RequestParam和ApiImpliciParam----Example中方法带有selective
paramType:表示参数放在哪个地方 header-->请求参数的获取:@RequestHeader(代码中接收注解) query-->请求参数的获取:@RequestPa ...
- Java 遍历Map对象的4种方法
http://blog.csdn.net/tjcyjd/article/details/11111401
- LN : leetcode 231 Power of Two
lc 231 Power of Two 231 Power of Two Given an integer, write a function to determine if it is a powe ...
- 最容易理解的HMM文章
wiki上一个比较好的HMM例子 分类 隐马尔科夫模型 HMM(隐马尔科夫模型)是自然语言处理中的一个基本模型,用途比较广泛,如汉语分词.词性标注及语音识别等,在NLP中占有很重要的地位.网上关于HM ...
- 场景分割:MIT Scene Parsing 与DilatedNet 扩展卷积网络
MIT Scene Parsing Benchmark简介 Scene parsing is to segment and parse an image into different image re ...