• 利用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 解决多层嵌套,回调地狱
    // 解决异步请求,同步结果的问题
    
    
    
     
  • 相关阅读:
    ROS安装
    安装octomap的问题与解决方案
    陀螺仪和加速度计MPU6050的单位换算方法
    概率基础
    Ubuntu使用多线程cmake时出现undefined reference to `pthread_create'
    C++中的static关键字的总结
    QSignalMapper的使用和使用场景
    Linux下C ,C ++, Qt开发环境
    void operator()()的功能
    C++11多线程编程--线程创建
  • 原文地址:https://www.cnblogs.com/null11/p/7499121.html
Copyright © 2020-2023  润新知