nodeJS中回调地域案例(Callback Hell)

2023-05-16

nodeJS中回调地域案例思考题

需求:现在存在三个文件 1.txt 2.txt 3.txt

每个文件里面有一个字符。使用:fs.readFile(异步) 顺序读取 1.txt 2.txt 3.txt 里面的内容,然后组成 一段字符串 把这个字符串写入到 data.txt 文件中。

编写思路:

  • 1、引入path内置模块和fs文件系统模块;
  • 2、读取到三个文本的路径和写入数据模块的路径;
  • 3、利用fs.readFiles()方法读取路径文本保存的内容,题目要求使用异步方法利用嵌套关系依次读取数据内容,数据读取成功获得data参数;
  • 4、利用拼接字符串的方法汇总读入数据;
  • 5、利用fs.writeFile()方法写入数据到指定的路径当中。运行成功数据写入成功

注意点: 回调函数参数写反导致内容输出失败,注意参数结构为前者为错误后者为正确(代码编写中出现的错误,仅供参考,具体原因不明^~^);

 源码:


const fs = require("fs");
const path = require("path");
​
let pathName1 = path.join(__dirname,"files", "1.txt");
let pathName2 = path.join(__dirname,"files", "2.txt");
let pathName3 = path.join(__dirname,"files", "3.txt");
let pathName4 = path.join(__dirname,"files", "data.txt");
​
​
fs.readFile(pathName1,"utf-8",(error1, data1)=>{
    if(error1){
        console.log(error1);
        return
    }
​
    fs.readFile(pathName2,"utf-8",(error2, data2)=>{
​
        if(error2){
            console.log(error2);
            return
        }
​
        fs.readFile(pathName3,"utf-8",(error3, data3)=>{
​
            if(error3){
                console.log(error3);
                return
            }
​
            // console.log(data1+data2+data3);
​
            fs.writeFile(pathName4,data1+data2+data3,"utf-8",(error)=>{
                console.log(data1+data2+data3);
            })
​
        })
    })
});  

回调地狱

在上面的题目中,操作之间是存在依赖性的上一步依赖下一步的成功执行。但是操作又是通过异步api完成,则我们只能在回调函数里面编写,那么这个时候就会出现回调嵌套回调,俗称:回调地狱 Callback Hell。

后面我们使用promise来解决。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nodeJS中回调地域案例(Callback Hell) 的相关文章

  • 计算两点之间的最短路线

    过去几周我一直在开发一款多人 HTML5 游戏 使用nodejs and websockets 我已经被这个问题困扰了一段时间 想象一下 我用数组实现了这个平铺地图 如下所示 1 or 棕色瓷砖 路上有障碍物 玩家无法通过 0 or 绿色瓷
  • Twitter 的推文按钮有回调吗?

    有没有办法在 Twitter 的推文按钮上注册回调 我希望能够跟踪我网站上的哪些特定用户在 Twitter 上发布了链接 我无法添加 onClick 事件 因为它是跨域 iFrame 还有其他想法吗 我见过一种方法 https stacko
  • 使用无服务器访问 SSM 变量

    我想用无服务器变量中的 SSM 参数 https serverless com blog serverless v1 22 0 按照文档 我运行了以下命令 aws ssm put parameter name foo value bar t
  • Node 不断恢复到旧版本

    每次我在控制台中重新启动 vagrant 时 它都会询问我的登录详细信息 然后说Now using node v7 10 0 npm v4 2 0 当我做run nvm install node I get v13 11 0 is alre
  • 使用 Express.js 和 NodeJS,您可以通过响应正文中的重定向发送 JSON

    我正在尝试通过 302 重定向发送 JSON 在 ExpressJS 中这可能吗 API 声明可以添加主体res json 例如 res json 302 name larry 在接收端 重定向的目的地 主体是空的 这是一些示例代码 发送应
  • node.js通过aws-sdk模块重命名s3对象

    是否可以通过重命名 s3 上的对象aws sdk https www npmjs com package aws sdk 我找不到解决方法 也许有一个临时解决方案 我想我会回答 因为没有人回答过 这个应该有用 create a new s3
  • 如何将对象数组传递给jade模板?

    我想将一组对象从 mongodb 传递到客户端 这是物体 var objeto img name name of the file image image jpg url title title of the image caption d
  • 当尝试将 formData 发送到 Express js 时,服务器无法识别 multipart/form-data

    我正在尝试将表单数据上传到快递服务器 在我的 Express js 服务器上 我有以下内容 router post uploads id function req res res send req body const title req
  • Phantom-node模块无法加载外部资源

    我正在开发一个nodejs服务器 它将发布的html呈现为pdf png或jpg https github com svenhornberg pagetox https github com svenhornberg pagetox ser
  • NPM 无法在 Windows 上安装“truffle”

    我正在尝试使用 npm 安装 truffle 但我不熟悉 NodeJS 并且不明白为什么 npm 不会安装它 我尝试npm install g truffle在具有管理员权限的 Powershell 中 经过几行输出后 我收到以下错误消息块
  • 如何使用 Protractor 检查某个元素是否不可点击?

    测试一个元素是否很简单is可使用量角器点击 但我一直在挠头试图弄清楚如何检查元素是否not可点击 我尝试将 click 函数包装在 try catch 中 这样当尝试单击时抛出错误时 它应该捕获它并让测试通过 然而 这不起作用 这是我执行检
  • 从 websocket 发送数据到 socket.io

    我使用 websocket 接口连接到 websocket 服务器 如果我想将通过 websocket 接口从 websocket 服务器接收到的数据发送到通过 http 服务器连接到我的客户端 我应该使用 socket io 吗 所以最后
  • Express中间件修改请求

    我目前有一个正在运行的服务器 前端使用nodejs mongo express 和 W2UI W2ui 请求来自包含所有参数的记录数组 记录 名称 foo 我想编写一个中间件 在请求到达路由之前对其进行编辑和更改 您可以创建自己的中间件来处
  • 渲染ejs模板

    我在nodejs中有以下代码 我读取temp ejs文件并获取ejsHtml作为字符串的内容 var html EJS render ejsHtml A div smth div 在 temp ejs 中 Output
  • 如果没有“new”,则无法调用类构造函数

    感谢这个问题已经被问过几次了 但是我遇到的几乎所有情况都是有人试图扩展非本地类的情况 我的情况有所不同 我有一个非常简单的基类 名为CObject如下 export class CObject extends BaseObject cons
  • Nodejs 调试生产中的错误

    我有一个在生产环境中运行的 Nodejs 脚本 我不太可能 千分之一 遇到这样的错误 TypeError value is out of bounds at checkInt buffer js 1009 11 at Buffer writ
  • Node.js 升级在 Windows 中仍然显示旧版本

    我已使用 msi 安装程序下载并安装了新版本的 nodejs 4 1 2 之后我跑了node v 但它仍然显示旧版本 0 12 2 我尝试重新启动Windows 甚至卸载nodejs并重新安装它 但仍然显示相同的内容 为什么会发生这种情况
  • 如何获取nodejs程序中的nodejs版本?

    In a Node js 的调试器 https github com rocky trepanjs 有一个命令显示V8版本和调试器包版本 如何获取nodejs版本 我想我基本上可以运行命令node version or nodejs ver
  • 呃!尝试将包发布到 npm 时出现 403

    我正在尝试将包发布到 npm 您可以在此处查看存储库 https github com biowaffeln mdx state https github com biowaffeln mdx state 我登录到 npmnpm login
  • 如何在查询语句之外从mysql查询中获取值?

    这是下面的函数console log function quo value value connection query SELECT role from roles where id 1 function error results fi

随机推荐

  • 链式编程+jQuery中html( )和text( )方法

    事件切换的复合属性写法 xff1a 标签名 hover function 执行函数 function 执行函数 xff0c 这一个方法仅hover可用 jQuery中有个动画队列的机制 xff1a 当我们对一个对象添加多次动画效果时后添加的
  • jQuery动态创建元素,通过元素操作修改购物车相关交互效果

    1 创建元素 语法 34 39 lt li gt lt li gt 34 动态的创建了一一个 lt li gt 2 添加元素 内部添加元素 生成之后 它们是父级关系 外部添加元素 生成之后 他们是兄弟关系 1 内部添加 把内容放入匹配元素内
  • jQuery 尺寸、位置操作

    1 width height 获取设置元素 width和height大小 console log 34 div 34 width 34 div 34 width 300 2 innerWidth innerHeight 获取设置元素 wid
  • jQuery侧边导航栏模块交互效果,导航栏点击事件、卷动事件、节流阀

    任务分析 xff1a 当我们滚动到模块 xff0c 就让电梯导航显示出来点击电梯导航页面可以滚动到相应内容区域核心算法 因为电梯导航模块和内容区模块 对应的当我们点击电梯导航某个小模块 xff0c 就可以拿到当前小模块的索引号 xff0c
  • jQuery学习周记

    周记 本周主要跟着教学视频制作了商城购物车案例 xff0c 页面电梯导航 xff0c 学习了利用jQuery操作尺寸 位置的操作 xff0c 这一部分就类似于JS中的BOM页面文档类型 xff0c 主要是通过对页面卷动事件进行一系列操作 其
  • jQuery自动触发事件与bootstrap/jQuery插件用法

    jQuery自动触发事件 有些事件希望自动触发 比如轮播图自动播放功能跟点击右侧按钮一致 可以利用定时器自动触发右侧按钮点击事件 xff0c 不必鼠标点击触发 语法 xff1a 1 element click 2 element trigg
  • 初识AJAX基础(一)

    1 初识AJAX 1 概要 google suggest A xff1a 通过发送请求到服务器上获取相关数据 B xff1a 发送方式 xff1a 通过URL 超链接 表单验证 C xff1a 将请求的数据发送给服务器获得相关数据 它是浏览
  • 使用nvm切换node方法,以及在nvm中的注意事项

    利用nvm随意下载nodejs版本 使用nvm去切换nodejs版本过程中出现的乱码情况分析 1 nvm安装路径错误导致nodejs下载路径有误 xff0c 无法正常打开 xff08 建议删除 xff0c 重新安装时使用默认路径安装 xff
  • nodejs中对es6语法规范讲解

    1 var的弊端及let关键字 1 var声明的变量有预解析 xff08 变量提升 xff09 xff0c 造成 逻辑混乱 xff0c 可以先使用 xff0c 后声明 2 var可以重复定义同一个变量 xff0c 逻辑错误 xff0c 第二
  • nodejs中解构语法

    1 解构语法 1 对象解构 存在意义 xff1a 简化代码 注意点 xff1a 1 在进行完全解构时 xff0c 属性值内花括号中的属性值的顺序可以随意颠倒 2 解构之后起重命名 let name itsName 61 obj 解构之后重命
  • 使用pt-query-digest分析mysql

    最近在看 高性能MySQL xff0c 作者们背靠Percona向我展示了以前从不知道的一些关于MySQL的知识以及各种分析优化工具 xff0c 比如这里要说的pt query digest 什么是pt query digest pt qu
  • node.js对es6语法学习

    1 es6模板字符串的使用 xff08 模板语法 xff09 console log 96 obj newname 是 obj name 的另外一个名字 xff0c 还有就是她今年18岁啦 96 es6 提供一个语法表示一个字符串 xff0
  • ES6中的箭头函数

    1 箭头函数 ES6 允许使用 箭头 xff08 61 gt xff09 简化函数的定义 注意点 xff1a 1 形参个数如果为1个 xff0c 可以省略小括号不写 2 如果函数体里面只有一个语句 xff0c 可以省略大括号不写 并且他会默
  • ES6this指向丢失问题+利用class类创建对象

    1 在dom操作中使用箭头函数可以规避this指向丢失问题 lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 g
  • nodeJS继承中的子类constructor的写法+静态属性和静态方法+nodejs中的全局对象

    1 继承中的子类constructor的写法 xff1a 在ES6中使用继承时 xff0c constructor中必须调用super 方法 其本质是在调用父类的constructor方法 通过这样的方式来达到属性继承的效果 xff0c 解
  • ES6中process对象

    process对象 了解 console log process argv 返回一个数组 xff0c 前两个值是 node 命令所在位置 xff0c 被执行 JS 文件的路径 xff0c 若你执行命令时还有带有参数 xff0c 依次会填充到
  • nodeJS模块化开发

    1 模块的使用 1 1 为什么要模块化 了解 在计算机程序的开发过程中 xff0c 随着程序代码越写越多 xff0c 在一个文件里代码就会越来越长 xff0c 越来越不容易维护 为了编写可维护的代码 xff0c 我们把很多函数分组 xff0
  • nodejs中Buffer数据类型

    一 Buffer数据类型 JavaScript 语言自身只有字符串数据类型 xff0c 没有二进制数据类型 但在处理像文件流时 xff08 文件读写操作 xff09 xff0c 必须使用到二进制数据 因此在 Node js 中 xff0c
  • nodejs中fs文件系统内置模块

    一 fs文件系统模块 Node js 的 API 内置有两个模块 xff1a path 和 fs xff0c 我们使用 JavaScript 代码编写程序运行在 Node js 环境中就可以操作文件 1 1 同步读取文件信息 同步读取 xf
  • nodeJS中回调地域案例(Callback Hell)

    nodeJS中回调地域案例思考题 需求 xff1a 现在存在三个文件 1 txt 2 txt 3 txt 每个文件里面有一个字符 使用 xff1a fs readFile 异步 顺序读取 1 txt 2 txt 3 txt 里面的内容 xf