码迷,mamicode.com
首页 > Web开发 > 详细

利用async和await异步操作解决node.js里面fs模块异步读写,同步结果的问题

时间:2017-09-09 20:17:42      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:ret   name   res   class   read   result   不容易   测试   executor   

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模块异步读写,同步结果的问题

标签:ret   name   res   class   read   result   不容易   测试   executor   

原文地址:http://www.cnblogs.com/null11/p/7499121.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!