菜鸟学习nodejs--回调函数

2023-11-05

什么是回调函数

如果大家使用过JQuery,那么会掉函数就像家常便饭一样,例如我们经常会给一个事件传一个function的参数,其实这就是回调函数,回调函数就是我们所说的异步,如果还是有点蒙,那么我们来举个例子。
我们新建一个index1.html和一个index2.html文件
在index1.html

$(function(){
    $('p').hide('slow',functin(){
        alter("他隐藏了");
    });
});

在index2.html

function(){
    $('p').hide('slow');
    alert('他隐藏了');
}

两个函数,第一个出现的页面的字体是弹出弹框和隐藏p标签的文件几乎是同事,甚至是先有弹框,信息慢慢消失,而第二个函数,p中的信息慢慢的消失,然后出现弹框。

Node.js中的回调函数

新建一个callback.js文件
添加如下代码:

function haveBreakfast(food, drink, callback) {
  console.log('早餐' + food + ', ' + drink);
  if (callback && typeof(callback) === "function") {
    callback();
  }
}

haveBreakfast('toast', 'coffee', function() {
  console.log('早餐吃完了,工作了啦!');
});

输出结果如下:
这里写图片描述

什么时候使用回调

什么时候使用呢,我们来看一个例子,然后再说明吧。
新建一个file1.txt,写上文本aaaa,新建一个file2.txt,写上文本bbb,然后新建要给callback2.js文件
这里写图片描述
在callback2中加入如下代码:

var fs = require('fs'),
    http = require('http');

  http.get({ host: 'baidu.com' }, function(res) {
      console.log(" 从baidu.com获取相应");
  }).on('error', function(e) {
      console.log("访问页面出现错误");
  });

  fs.readFile('file1.txt', 'utf8', function (err, data) {
      if (err) throw err;
      console.log('File 被读取' + data);
  });

  http.get({ host: 'www.sina.com.cn' }, function(res) {
      console.log("从sina.com.cn获取相应");

  }).on('error', function(e) {
      console.log("从sina.com.cn获取相应失败");

  });

  fs.readFile('file2.txt', 'utf8', function (err, data) {
      if (err) throw err;
      console.log('File2被读取,内容是' + data);
  });

两次效果如下:
这里写图片描述
从上边的结果我们可以看出来,其实谁先访问,谁后访问都是没有固定顺序的,对于网络的访问,我们需要根据网宽等很多情况,对于文件的读取,如果文件太大,他们他一定是后读出来的,而这个情况正式我们要解释的什么时候用,对于顺序性没有严格要求,而只是需要结果,那么OK,回调是你最好的选择。

同步和异步

node.js希望我们再单一进程中使用异步编程,当然这个不是Node.js或者javascript独有的,而是一种风格,例如c#中的Tread,Task,java中的Thread,Runable等都是异步编程,重要的事情说三遍,这是一个种风格,这是一个种风格,这是一个种风格。如果我们使用同步,程序的运行可能就会照成阻塞,这样不利于我们CPU的利用。

小结

我们介绍了js中的回调函数,我们也介绍了Node.js中怎么用回调函数,还介绍了同步和异步的区别,当然我们是建议用异步的。这样资源的利用率会大大提高。

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

菜鸟学习nodejs--回调函数 的相关文章

  • 嵌套异步/等待 Nodejs

    似乎无法弄清楚为什么这对我不起作用 我有一个父函数 它对子加载进程执行 AWAIT LOAD 进程又调用另一个名为 LOADDATA 的 AWAIT 所以基本上是这样的 module exports async function try a
  • Nodejs - 检查隐藏文件

    我正在迭代文件目录 想知道是否可以测试文件是否隐藏 目前 我只是检查文件是否以 开头或不 这适用于 Mac 也许还有 Linux 但是 我想知道如何在 Windows 上做到这一点 另外 句点会在所有版本的 Linux 中隐藏该文件吗 Th
  • 尝试在 React 应用程序中连接到 MySQL 数据库时,无法读取未定义的属性(读取“查询”)错误

    我正在尝试连接到 MySQL 数据库并在单击按钮后在 React 应用程序中运行查询 一些它如何给出错误 我当前的代码如下所示 import mysql from mysql function App async function sync
  • Node npm 包抛出使用严格:全局发布和安装后未找到命令

    我正在尝试发布 npm 包 当我全局安装该包并尝试运行 cli 命令时 我收到此错误 nvm versions node v0 12 2 bin myPack line 1 use strict command not found nvm
  • 错误关系不存在

    我得到了 error relation causes does not exist 我的节点应用程序出现错误 这种关系确实存在 我不确定问题出在哪里 我创建了该表 CREATE TABLE causes cause id bigint NO
  • 如何阻止 Node.js 服务器崩溃

    我是节点js新手 我试图创建一个简单的 HTTP 服务器 我按照著名的例子创建了一个 Hello World 服务器如下 var handleRequest function req res res writeHead 200 res1 e
  • 如何使用 Protractor 检查某个元素是否不可点击?

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

    我正在使用 node js 构建一个应用程序并尝试将数据下载为 csv 文件 我正在使用 json2csv https www npmjs com package json2csv https www npmjs com package j
  • Nodejs 调试生产中的错误

    我有一个在生产环境中运行的 Nodejs 脚本 我不太可能 千分之一 遇到这样的错误 TypeError value is out of bounds at checkInt buffer js 1009 11 at Buffer writ
  • Meteor.setTimeout 和 Meteor.methods 之间的并发

    在我的 Meteor 应用程序中实现回合制多人游戏服务器 客户端通过发布 订阅接收游戏状态 并且可以调用 Meteor 方法sendTurn将回合数据发送到服务器 他们无法直接更新游戏状态集合 var endRound function g
  • 使用socket.io进行用户身份验证

    我已经红色了这个教程 http howtonode org socket io auth http howtonode org socket io auth 它展示了如何使用express和socket io对用户进行身份验证 但是有没有一
  • 为什么 Node.js 应用程序只能从 127.0.0.1/localhost 访问?

    我本来打算教我的朋友介绍 Node 但是后来 我想知道为什么这个代码来自nodejs org var http require http http createServer function req res res writeHead 20
  • HTML 格式的 Google Apps 脚本

    是否可以在我的 HTML 中使用 google apps 脚本 我希望能够从外部框架 例如 Node js 以纯 Javascript 形式从表单写入电子表格 https developers google com apps script
  • 使用 React.js + Express.js 发送电子邮件

    我在 ES6 中使用 React js 构建了一个 Web 应用程序 我目前想要创建一个基本的 联系我们 页面并想要发送电子邮件 我是 React 新手 刚刚发现我实际上无法使用 React 本身发送电子邮件 我正在遵循教程nodemail
  • 由于 Chrome 修订,Firebase puppeteer PDF 功能超时

    我有一个 Firebase 函数来创建 PDF 文件 最近 由于 Chrome 修订版 而超时 我既不明白错误消息 也不明白出了什么问题 当我在 MacOS 下将其本地部署时 该功能有效 TimeoutError Timed out aft
  • libxmljs 的替代品 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 目标 使用 Node js 访问网页 使用 xpath 语法操作 DOM 并打印新的 DOM libxm
  • 节点无法抓取某些页面

    我不知道这是否与冷融合页面有关 但我无法刮掉这些 cfm pages 在目录中的命令行中request run node gt var request require request node gt var url http linguis
  • Should js 无法读取 null 的属性“should”

    我尝试在node中使用测试工具mocha 考虑以下测试场景 var requirejs require requirejs requirejs config Pass the top level main js index js requi
  • 如何在 Sequelize ORM 中限制连接行(多对多关联)?

    Sequelize 定义了两种模型 具有多对多关联的 Post 和 Tag Post belongsToMany db Tag through post tag foreignKey post id timestamps false Tag
  • 找不到“节点”的类型定义文件

    更新 Angular Webpack 和 TypeScript 后出现奇怪的错误 知道我可能会错过什么吗 当我使用 npm start 运行应用程序时 出现以下错误 at loader Cannot find type definition

随机推荐

  • 操作系统实验页面调度(内含可运行C/C++代码)

    更新了 更新了 都支楞起来 一 实验内容及要求 首先 生成一个随机的页面引用串 其中页码的范围为0 9 将这个随机页面引用串应用到每个算法 记录每个算法引起的缺页次数 列出每次页面置换的换出页序号 计算缺页率 系统分配给用户的页面帧的数量可
  • MySQL锁 脑图

    学习MySQL锁 时做的脑图 记个笔记
  • 软件开发过程中的思维方式 -- 如何分析问题

    这是 ZY 第 16 篇原创技术文章 今天这篇文章不谈技术 想聊聊软件开发过程中的一些思维方式 以及如何去深入挖掘问题的核心 如何去看清问题的本质 一 分析问题的重要性 我们在软件开发过程中 往往会遇到很多问题 不管是对需求合理性的探讨 还
  • 百度旋转验证码识别方案

    废话不多说 直接上代码 需要看识别效果的小伙伴可以直接访问这里 https www detayun cn tool verifyCodeHomePage 1679620548194 代码如下 author dengxinyan import
  • vue 实现图片懒加载

    一 懒加载的目的 有些页面可能展示的是大量的图片 如果我们一次性加载所有图片就会浪费性能 影响用户体验 所以我们就会懒加载这些图片 即可视区域之外的图片不加载 随着页面的滚动 图片进入可视区域 则触发图片的加载显示 优点 页面加载速度快 用
  • SSM 框架原理简介及解析

    简介 ssm框架就是标准的MVC模式 标准的SSM框架有四层 分别是dao层 service层 controller层和View层 使用spring实现业务对象管理 使用spring MVC负责请求的转发和视图管理 mybatis作为数据对
  • 2023最新版本Pycharm安装教程【2023.1.3】

    前言 本文方法可以安装使用截止当前2023 1 3最新版本Pycharm 过程非常简单 按照下面的步骤来一分钟即可搞定 1 下载安装 已经安装过的可以跳过该步骤 下载 到官网地址下载正版安装包JetBrains Pycharm官网下载地址
  • android手机相册多张上传,一键批量上传手机照片到QQ相册功能 节省手机流量

    十一双假期刚刚结束 无论回家还是出游 不管是家里的庭院小景还是一路上的美景扑面 你一定会拿起手机不断按下快门 记录每一个美的瞬间 如今长假归来 我们都希望能够马上和好友一起分享假期的美景趣事 可是 手机中照片数量太多 如何才能实现快速又便捷
  • Nuget配置修改-globalPackagesFolder(默认包存放位置)

    环境 nuget windows2010 nuget默认的全局包下载地址一般为 C Users username nuget packages 项目多了之后 nuget下载的包就回慢慢的变多 导致c盘被大量占用 这时候我们想要将nuget的
  • (三-3)机器学习中调参的基本思想+随机森林+实例(共3小节,文章代码即文章中所有的代码)

    通过画学习曲线 或者网格搜索 我们能够探索到调参边缘 代价可能是训练一次模型要跑三天三夜 但是在现实中 高手调参恐怕还是多依赖于经验 而这些经验 来源于 1 非常正确的调参思路和方法 2 对模型评估指 标的理解 3 对数据的感觉和经验 4
  • HEVC 编解码资源

    资料 overview 等 csvt系列详见HHI主页 适合 入门 Encoder Description 适合入门 Recommendation H 265 pdf 2016 12 22 标准文档 适合 提高 解码 High Effici
  • 订单管理系统功能

    订单管理系统的工作流程是首先对客户的订单信息进行接收 然后对订单进行处理 及时掌握交易动态 在有突发状况发生时及时反馈 订单管理系统是物理管理系统中不可缺少的一部分 商淘云跟您分享一般的订单管理系统有哪些功能 1 业务流程管理 包括订单管理
  • 程序员屌丝逆袭之路不是炒股

    最近这一段时间 你身边是不是大多数人都在谈论股票 那就对了 无论走到哪都能听到 今天又绿了 我的股票跌停了 冲上5000点啦 等等之类的话 我还不是一个股民 一直都不是 因为不懂 不敢入市 因为有人跳楼 害怕入市 最主要的原因是 因为手里没
  • 3.30 OrCAD中原理图文件怎么进行DRC检测?

    笔者电子信息专业硕士毕业 获得过多次电子设计大赛 大学生智能车 数学建模国奖 现就职于南京某半导体芯片公司 从事硬件研发 电路设计研究 对于学电子的小伙伴 深知入门的不易 特开次博客交流分享经验 共同互勉 全套资料领取扫描文末二维码 温馨提
  • 如何判断用户是否已关注公众号

    一 微信公众平台配置 1 获取appid appsecret 添加白名单 登录微信公众平台 进入基本配置 开发中需要用到两个参数 appId和appSecret appSecret只展示一次 需保存下来 否则需要重置获取 获取access
  • 以太坊day(4)

    以太坊day 4 一 遇见的错误 1 1 Error Invalid JSON RPC response 二 goland上进行合约的开发 2 1 需要的源 2 2 合约文件 2 3 编译合约 2 4 部署合约 2 5 获取合约实例 2 6
  • AIGC的1000+篇文章总结

    AIGC的1000 篇文章总结 本文收集和总结了有关AIGC的1000 篇文章 由于篇幅有限只能总结近期的内容 想了解更多内容可以访问 http www ai2news com 其分享了有关AI的论文 文章 图书 query AIGC AI
  • vue中的函数式组件

    用过react的同学都知道 函数式组件在react中的应用是很流行的 那如何在vue中使用函数式组件呢 什么是函数式组件 熟悉react的同学应该都知道 react中的函数式组件其实就是一个接收一些prop的函数 然后返回HTML vue的
  • Active Directory配置与应用

    Active Directory 配置与应用
  • 菜鸟学习nodejs--回调函数

    什么是回调函数 如果大家使用过JQuery 那么会掉函数就像家常便饭一样 例如我们经常会给一个事件传一个function的参数 其实这就是回调函数 回调函数就是我们所说的异步 如果还是有点蒙 那么我们来举个例子 我们新建一个index1 h