我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Node.js异步编程中的callback怎么用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Node.js异步编程中的callback怎么用

这篇文章主要介绍“Node.js异步编程中的callback怎么用”,在日常操作中,相信很多人在Node.js异步编程中的callback怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node.js异步编程中的callback怎么用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

异步编程案例一

function interview(callback) {  setTimeout(() => {    callback("success");  }, 1000);}interview(function (res) {  if (res === "success") {    console.log("============我笑了");  }});

回调函数格式规范

  • error-first callbak

  • Node-style callback

  • 第一个参数是 error,后面的参数才是结果

为什么第一个参数是 error

function interview(callback) {  setTimeout(() => {    if (Math.random() < 0.3) {      callback("success");    }    throw new Error("fail");  }, 1000);}try {  interview(function (res) {    if (res === "success") {      console.log("============我笑了");    }  });} catch (error) {  console.log("fail", error);}

Node.js异步编程中的callback怎么用

上面的代码中,try catch并不能捕获 throw new Error('fail') 抛出的错误!,而是抛出到了 JS 全局! 在 Node.js 中,全局错误时非常严重的事情,会造成程序的崩溃!

为什么没 try catch 无法捕获 setTimeout 里面的 throw 呢? 这就跟调用栈 和 事件循环有关系了!

每一个事件循环都是一个全新的调用栈! setTimeout 与 interview 是两个不同的事件循环!

但是可以通过在回调函数中的参数抛出错误的方式来解决这个问题

function interview(callback) {  setTimeout(() => {    if (Math.random() < 0.3) {      callback(null, "success");    } else {      callback(new Error("fail"));    }  }, 1000);}interview(function (error) {  if (error) {    return console.log("============我哭了");  }  console.log("============我笑了");});

上面的代码中,可以根据参数的类型来判断是否出错! 但是 Node.js 中有很对回调函数, 我们不可能在每一个函数中都去判断参数类型是是否出错!

Node.js 规定第一个参数就是 erro,第二个参数就是结果!如果第一个参数不为空,则说明异步调用出错了!

异步流程控制的问题

回调地狱

多个异步任务串行的情况, 下面我们模拟一下 N 轮面试,

function interview(callback) {  setTimeout(() => {    if (Math.random() < 0.6) {      callback(null, "success");    } else {      callback(new Error("fail"));    }  }, 1000);}interview(function (error) {  if (error) {    return console.log("======第一轮面试======我哭了");  }  interview(function (error) {    if (error) {      return console.log("====第二轮面试========我哭了");    }    interview(function (error) {      if (error) {        return console.log("====第三轮面试========我哭了");      }      console.log("三轮面试都成功了!啊哈哈哈!");    });  });});

可以看到上面的异步流程做了三层嵌套,这还只是代码就比较简单的情况! 那么在实际应用中,每一个嵌套函数都可能非常复杂,这就造成难以开发和维护,看着让人生气,这就是所谓的** 回调地狱**

a

多个个异步任务并发的情况

function interviewCompay() {  let count = 0;  interview(function (error) {    if (error) {      return console.log("====第一家公司面试========我哭了");    }    count++;  });  interview(function (error) {    if (error) {      return console.log("====第二家公司面试========我哭了");    }    count++;    if (count === 2) {      return console.log("两家公司面试都成功了!我笑了");    }  });}interviewCompay();

在每一个异步任务里面都需要加入同一个变量才能捕获 多个异步任务的结果

到此,关于“Node.js异步编程中的callback怎么用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Node.js异步编程中的callback怎么用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Node.js异步编程中的callback怎么用

这篇文章主要介绍“Node.js异步编程中的callback怎么用”,在日常操作中,相信很多人在Node.js异步编程中的callback怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node.js异步
2023-06-17

Node.js异步编程的callback有什么用

本文小编为大家详细介绍“Node.js异步编程的callback有什么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Node.js异步编程的callback有什么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧
2023-07-04

Node.js 异步编程之 Callback介绍(一)

Node.js 基于 JavaScript 引擎 v8,是单线程的。Node.js 采用了与通常 Web 上的 JavaScript 异步编程的方式来处理会造成阻塞的I/O操作。在 Node.js 中读取文件、访问数据库、网络请求等等都有可
2022-06-04

浅谈node.js中async异步编程

1.什么是异步编程?异步编程是指由于异步I/O等因素,无法同步获得执行结果时, 在回调函数中进行下一步操作的代码编写风格,常见的如setTimeout函数、ajax请求等等。 示例:for (var i = 1; i <= 3; i++)
2022-06-04

掌握Node.js中的Promise异步编程方式

Node.js中的Promise是一种异步编程方式,可以解决回调地狱问题,提高代码可读性和可维护性。通过掌握Promise的使用方法,可以更好地进行异步编程,避免一些常见的错误和陷阱
2023-05-18

Dart中的异步编程怎么使用

这篇文章主要讲解了“Dart中的异步编程怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Dart中的异步编程怎么使用”吧!一 事件循环flutter 就是运行在一个root isola
2023-07-06

Node.js中同步和异步编程的区别及使用方法

在Node.js中,同步和异步编程是两种不同的处理方式。同步方式会阻塞程序的执行,而异步方式则不会。通过掌握它们的区别和使用方法,可以更好地实现程序的性能优化和功能扩展。同时,需要注意异步编程中的回调地狱问题,使用Promise可以更好地处理异步编程
2023-05-18

node.js下when.js 的异步编程实践

假设一个业务场景: 通过rss地址,获取rss并保存于文件,rss地址保存于文件中。 完成该场景的业务需要完成3个任务: 1.从文件中读取rss地址。 2.获取rss。 3.保存于文件。 最后将这三个任务进行整合。 准备: 存放rss地址的
2022-06-04

Node.js异步编程有哪些及怎么实现

今天小编给大家分享一下Node.js异步编程有哪些及怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Node.js 的
2023-07-04

使用Node.js的async和await进行异步编程

使用异步编程可以提高Node.js应用程序的性能,而async和await是Node.js中实现异步编程的一种简单且易于使用的方式,可以帮助开发者避免回调地狱和处理异步操作时的错误
2023-05-18

Node.js中异步迭代器怎么使用

这篇文章主要介绍了Node.js中异步迭代器怎么使用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是异步迭代器异步迭代器实际上是以前迭代器的异步版本。当我们不知道迭代的值
2023-06-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录