• 回调地狱,Promise解决回调地狱


    1、npm init -y
    2、npm install Promise
    3、readFile是异步函数,因此执行读取a.txt、b.txt、c.txt三个文件顺序不确定
    4、如果想要按照先读取a文件,再读取b文件,再读取c文件顺序
    5、需要层层嵌套,出现回调地狱,也可以使用Promise解决回调地狱
    var fs = require('fs');

    var p1 = new Promise(function (resolve,reject) {
    fs.readFile('./a.txt','utf8',function (err,data) {
    if(err){
    reject(err)
    }
    resolve(data)
    })
    });

    var p2 = new Promise(function (resolve,reject) {
    fs.readFile('./b.txt','utf8',function (err,data) {
    if(err){
    reject(err)
    }
    resolve(data)
    })
    });

    var p3 = new Promise(function (resolve,reject) {
    fs.readFile('./c.txt','utf8',function (err,data) {
    if(err){
    reject(err)
    }
    resolve(data)
    })
    });

    p1
    .then(function (data) {
    console.log(data); //p1的data
    return p2;
    },function (err) { //p1的err
    console.log('读取文件失败了...',err)
    })
    .then(function (data) {
    console.log(data); //p2的data
    return p3;
    },function (err) {
    console.log(err) //p2的err
    })
    .then(function (data) {
    console.log(data); //p3的data
    },function (err) {
    console.log(err) //p3的err
    });


    封装
    var fs = require('fs');

    function pReadFile(dbPath) {
    return new Promise(function (resolve,reject) {
    fs.readFile(dbPath,'utf8',function (err,data) {
    if(err){
    reject(err)
    }else{
    resolve(data)
    }
    })
    })
    }

    pReadFile('./a.txt')
    .then(function (data) {
    console.log(data);
    return pReadFile('./b.txt')
    })
    .then(function (data) {
    console.log(data);
    return pReadFile('./c.txt')
    })
    .then(function (data) {
    console.log(data)
    });
  • 相关阅读:
    编程基础之Java中继承和多态的理解
    2020年程序员是否过剩?
    如何自学编程,零基础适合学习Java或者Web前端吗,非科班的能学java吗?
    转行IT做后端开发,学python还是java?
    java和大数据哪个更有前途啊?零基础适合学哪个课程?
    随笔(二十)
    随笔(十九)
    随笔(十八)
    OSPF练习
    OSPF综合实验(二)
  • 原文地址:https://www.cnblogs.com/xushan03/p/11962574.html
Copyright © 2020-2023  润新知