zoukankan      html  css  js  c++  java
  • 利用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 解决多层嵌套,回调地狱
    // 解决异步请求,同步结果的问题
    
    
    
     
  • 相关阅读:
    redis 数据类型 Hash
    redis有序集合类型sort set
    redis数据类型set
    redis的 list
    redis的key
    centos安装redis
    input聚焦事件
    width(),innerWidth(),outerWidth(),outerWidth(true)
    jq 选择器
    详解CSS中:nth-child的用法_大前端
  • 原文地址:https://www.cnblogs.com/null11/p/7499121.html
Copyright © 2011-2022 走看看