iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >Node.js异步编程中的callback有什么作用
  • 523
分享到

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

2024-04-02 19:04:59 523人浏览 独家记忆
摘要

这篇文章主要介绍“node.js异步编程中的callback有什么作用”,在日常操作中,相信很多人在node.js异步编程中的callback有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操

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

非阻塞 I/O 的运行结果是需要回调函数来接收的,下面本篇文章给大家详细介绍一下Node.js异步编程中的callback(回调)。

非阻塞 I/O 的运行结果是需要回调函数来接收的,这种通过回调函数的方式就是异步编程!

异步编程案例一

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有什么作用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Node.js异步编程中的callback有什么作用

本文链接: https://www.lsjlt.com/news/71029.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Node.js异步编程中的callback有什么作用
    这篇文章主要介绍“Node.js异步编程中的callback有什么作用”,在日常操作中,相信很多人在Node.js异步编程中的callback有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操...
    99+
    2024-04-02
  • Node.js异步编程的callback有什么用
    本文小编为大家详细介绍“Node.js异步编程的callback有什么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Node.js异步编程的callback有什么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-07-04
  • Node.js异步编程中的callback怎么用
    这篇文章主要介绍“Node.js异步编程中的callback怎么用”,在日常操作中,相信很多人在Node.js异步编程中的callback怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node.js异步...
    99+
    2023-06-17
  • Nodejs异步编程中的Promise有什么作用
    这篇文章主要介绍“Nodejs异步编程中的Promise有什么作用”,在日常操作中,相信很多人在Nodejs异步编程中的Promise有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,...
    99+
    2024-04-02
  • 缓存、异步编程和 PHP:NPM 有什么作用?
    在现代的 Web 开发中,性能是一个至关重要的问题。缓存和异步编程是两个常用的技术手段,可以有效地提升 Web 应用程序的性能。而 NPM(Node Package Manager)则是一个流行的包管理器,可以帮助开发者更方便地使用和分享...
    99+
    2023-08-01
    npm 缓存 异步编程
  • Node.js中的异步编程的示例分析
    Node.js中的异步编程的示例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。异步编程概述曾经的单线程模型在...
    99+
    2024-04-02
  • Node.js异步编程有哪些及怎么实现
    今天小编给大家分享一下Node.js异步编程有哪些及怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Node.js 的...
    99+
    2023-07-04
  • 掌握Node.js中的Promise异步编程方式
    目录介绍 静态方法Promise.resolve()Promise.allPromise.allsSettled介绍  Promise就是一个用来存储数据的对象但...
    99+
    2023-05-18
    Node.js Promise Node.js Promise异步编程
  • Git在Java实时异步编程中的作用是什么?
    Git是一个非常流行的版本控制系统,它在软件开发中扮演着重要的角色。在Java实时异步编程中,Git的作用同样不可忽视。本文将探讨Git在Java实时异步编程中的作用。 Git的基本概念 在介绍Git在Java实时异步编程中的作用之前,我...
    99+
    2023-09-25
    git 实时 异步编程
  • Node.js中同步和异步编程的区别及使用方法
    目录一、进程和线程二、同步和异步同步阻塞异步问题一、进程和线程 代码编写完毕在编译的过程中计算机的内存中会开辟一个空间来存储代码,这个空间就相当于是进程,可以将进程类比于工厂的厂房,...
    99+
    2023-05-18
    Node.js中同步和异步 Node.js 同步 Node.js 异步
  • Bash关键字在Java异步编程中的作用是什么?
    在Java编程中,异步编程是一种非常重要的编程方式。异步编程可以提高程序的性能和响应速度。在Java中,我们通常使用线程池或者Future等方式来实现异步编程。但是,你知道吗?Bash关键字也可以在Java异步编程中发挥重要作用。 那么,...
    99+
    2023-10-09
    异步编程 bash 关键字
  • Java中的异步编程与Git有什么联系?
    在Java开发中,异步编程已经成为一种非常重要的技术手段,可以大大提高应用程序的性能和响应速度。而Git则是一个非常流行的版本控制系统,可以帮助开发者管理代码的版本和变更。虽然这两个技术看似没有直接关系,但实际上它们之间存在着一些联系。 ...
    99+
    2023-09-25
    git 实时 异步编程
  • 使用Node.js的async和await进行异步编程
    Node.JS官方文档:https://nodejs.dev/en/ 创建异步函数,并返回相关数值: 一般方式创建 function fn(){ return Promi...
    99+
    2023-05-18
    Node.js async和await Node.js 异步编程
  • Node.js Streams:掌握异步编程的精髓
    ...
    99+
    2024-04-02
  • PHP编程中常用的异步编程算法有哪些?
    随着互联网技术的不断发展,Web应用程序对并发性和响应性的需求越来越高。异步编程成为了一种解决方案,因为它可以充分利用现代计算机的多核心和并行处理能力,提高Web应用程序的性能和响应速度。在PHP编程中,异步编程也变得越来越重要。本文将介...
    99+
    2023-10-29
    编程算法 api 异步编程
  • C#中的异步编程模式是什么
    在C#中,异步编程模式是通过async和await关键字来实现的。使用这种方式可以将耗时的操作(例如网络请求、文件操作等)放在一个单...
    99+
    2024-04-03
    C#
  • 二维码生成器在Python中的异步编程中的作用是什么?
    在现代软件开发中,异步编程已经成为了越来越流行的编程模式,它可以提高程序的响应速度和并发处理能力。Python作为一种流行的编程语言,也提供了强大的异步编程支持。在这篇文章中,我们将探讨二维码生成器在Python中的异步编程中的作用是什么...
    99+
    2023-08-15
    数据类型 异步编程 二维码
  • Python中的异步编程算法是什么?
    Python中的异步编程算法是指一种能够提高程序效率的编程方法,它可以在程序执行某个任务时,同时执行其他任务,从而实现并发执行。在Python中,异步编程通常使用asyncio模块来实现。 异步编程的核心是事件循环,它负责调度任务的执行。在...
    99+
    2023-07-08
    对象 异步编程 编程算法
  • Dart中的异步编程怎么使用
    这篇文章主要讲解了“Dart中的异步编程怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Dart中的异步编程怎么使用”吧!一 事件循环flutter 就是运行在一个root isola...
    99+
    2023-07-06
  • 异步编程:PHP中的Linux数组操作
    在PHP中,数组是一种非常常见的数据结构,可以用于存储和操作多个值。Linux数组是PHP的一种特殊类型,它提供了一种异步编程的方式,可以在PHP中实现高效的并发操作。 Linux数组是一种内存映射文件,它将一个文件映射到内存中,并允许多...
    99+
    2023-09-20
    linux 数组 异步编程
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作