node Async的异步处理使用详解

这次给大家带来node Async的异步处理使用详解,node Async异步处理使用详解的注意事项有哪些,下面就是实战案例,一起来看一下。

最近在研究nodejs,令我感受比较深的是……熟悉js代码的地球人都知道,js的加载顺序很重要!很重要!!那么问题来了,在编写node的时候,会在后台去请求很多接口(我们公司是与java后台交接数据的),接口就会有个回调,这么多回调怎么办呢……每个回调回来的加载顺序怎么去处理是个问题……总不可能去嵌套……嵌套……这样吧,那会显的多麻烦!!这么大的一个问题怎么没有处理方法呢,那是不可能的……对吧!

Async异步处理模块!

以下是小sam的理解:

安装很简单,就跟普通的安装模块一样就行了

这样就安装成功了! 接下来就是引用了,在代码里引用模块:

var async = require('async');

登录后复制

这样引用也就ok了!在代码后面就可以轻松的用async这个对像模块了!

查了下官方文档,这个模块的方法实在是太多了!看的眼花……

下面我们来谈谈小编觉得比较常用到的几个方法就好了

series

1.series(tasks, [callback]) 顺序执行数组、集合内的函数,当前面一个函数执行完成就会立即执行下一个函数,如果函数触发了错误,可以在callback函数中验证,否则会一直执行完成tasks

话多没用,代码才是亲爹

用例:

//tasks传的是一个数组函数async.series([  function(callback) {  // do some stuff ...  callback(null, 'one');}, function(callback) { // do some more stuff ... callback(null, 'two');}],// optional callback//我觉得这里很重要err是上面两个函数的错误信息,而results这个参数是一个数组对象,它们的值是上面数组函数每个callback里面的参数。function(err, results) {// results is now equal to ['one', 'two']});// an example using an object instead of an          //下面的代码其实跟上面的差不多,只是stasks传的是对象而不是数组async.series({one: function(callback) {  setTimeout(function() {    callback(null, 1);  },  200);},two: function(callback) {  setTimeout(function() {    callback(null, 2);  },  100); }},function(err, results) {// results is now equal to: {one: 1, two: 2}});

登录后复制

parallel

2.parallel(tasks, [callback])  并行执行数组、集合内的方法,不用等到前一个函数执行完再执行下一个函数,如果函数触发了错误,可以在callback函数中验证

 async.parallel([ function(callback) {  setTimeout(function() {     callback(null, 'one');    },  200); }, function(callback) {  setTimeout(function() {    callback(null, 'two');  },  100); }], // optional callback function(err, results) {  // the results array will equal ['one','two'] even thoug  // the second function had a shorter         timeout });

登录后复制

parallelLimit

3.parallelLimit(tasks, limit, [callback])  和2用法一样,只是多了一个任务数量限制,最多允许多少个任务在并行执行

whilst

4.whilst(test, fn, callback)  等同于while的用法,第一个参数为验证条件,第二个参数为执行函数,第三个参数为验证失败后回调函数,一般在做延迟动画用的比较多

var count = 0; async.whilst( function () { return count < 5; }, //验证成  功继续,失败进回调 function (callback) {   count++;   setTimeout(callback, 1000); }, function (err) {   // 5 seconds have passed });

登录后复制

waterfall

5.waterfall(tasks, [callback])  tasks依次运行,前一个函数的回调会作为后一个函数的参数,如果有任何任务通过一个错误的回调,下一个函数不执行

async.waterfall([ function(callback){   callback(null, 'one', 'two'); }, function(arg1, arg2, callback){  // arg1 now equals 'one' and arg2 nowequals 'two'   callback(null, 'three'); }, function(arg1, callback){   // arg1 now equals 'three'   callback(null, 'done'); } ], function (err, result) {  // result now equals 'done'  });

登录后复制

compose

6.compose(fn1, fn2…)  按顺序加入到队列中,按顺序执行,将上一个函数的结果作为下一个函数的值

 function add1(n, callback) { setTimeout(function () {   callback(null, n + 1); }, 10); } function mul3(n, callback) { setTimeout(function () {   callback(null, n * 3); }, 10);}var add1mul3 = async.compose(mul3, add1); add1mul3(4, function (err, result) {// result now equals 15});

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

以上就是node Async的异步处理使用详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2772208.html

(0)
上一篇 2025年3月8日 13:11:50
下一篇 2025年2月18日 07:33:48

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • nodejs async异步需要哪些函数

    这次给大家带来nodejs async异步需要哪些函数,nodejs async异步使用函数的使用函数有哪些,下面就是实战案例,一起来看一下。 nodejs框架使用函数很多,“使用函数”本来是件比较简单的事,但是对于nodejs的异步架构的…

    编程技术 2025年3月8日
    200
  • Node的模块系统使用详解

    这次给大家带来Node的模块系统使用详解,Node模块系统使用的注意事项有哪些,下面就是实战案例,一起来看一下。 模块是构建应用程序的基础,也使得函数和变量私有化,不直接对外暴露出来,接下来我们就要介绍Node的模块化系统和它最常用的模式 …

    编程技术 2025年3月8日
    200
  • Bootstrap的表单验证功能使用详解

    这次给大家带来Bootstrap的Bootstrap功能使用详解,Bootstrap表单验证的Bootstrap有哪些,下面就是实战案例,一起来看一下。 使用方式: 1.CSS样式 .valierror { border-color: re…

    编程技术 2025年3月8日
    200
  • 在ES6里模板字符串使用详解

    这次给大家带来在ES6里模板字符串使用详解,在ES6里模板字符串使用的注意事项有哪些,下面就是实战案例,一起来看一下。 写在前面 关于 ES6, 也终于在 2015 年的 7 月 18 号尘埃落定了。虽然说各大浏览器还没有全面的支持,不过这…

    编程技术 2025年3月8日
    200
  • Vue路由钩子的实战使用教程

    这次给大家带来Vue路由钩子实战使用教程,Vue路由钩子使用的注意事项有哪些,下面就是实战案例,一起来看一下。 一. 路由钩子语法 在vue-router的官方文档中, 将路由钩子翻译为导航守卫, 下面是文档中的内容摘要, 大家也可以通过传…

    编程技术 2025年3月8日
    200
  • vue的花括号怎么使用

    这次给大家带来vue的花括号怎么使用,vue花括号使用的注意事项有哪些,下面就是实战案例,一起来看一下。 {{}}的使用 {{msg}} {{cart.brand}} 3 + 5 = {{ 3 + 5 }} new Vue({ el:”#c…

    编程技术 2025年3月8日
    200
  • vue综合组件通信使用案例

    这次给大家带来vue综合组件通信使用案例,vue综合组件通信使用的注意事项有哪些,下面就是实战案例,一起来看一下。 本文实例为大家分享了vue综合组件间的通信,供大家参考,具体内容如下 实现一个ToDoList。 ①完成所有的组件的创建和使…

    编程技术 2025年3月8日
    200
  • angular组件间传值与通信使用详解

    这次给大家带来angular组件间传值与通信使用详解,angular组件间传值与通信的注意事项有哪些,下面就是实战案例,一起来看一下。 本文主要介绍angular在不同的组件中如何进行传值,如何通讯。主要分为父子组件和非父子组件部分。 父子…

    编程技术 2025年3月8日
    200
  • Vuex状态管理应如何使用

    这次给大家带来Vuex状态管理应如何使用,Vuex状态管理使用的注意事项有哪些,下面就是实战案例,一起来看一下。 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状…

    编程技术 2025年3月8日
    200
  • JS按钮禁用和启用使用详解

    这次给大家带来JS按钮禁用和启用使用详解,使用JS按钮禁用和启用的注意事项有哪些,下面就是实战案例,一起来看一下。 废话不多说了,直接给大家贴代码了,具体代码如下所述: 按钮启用和禁用function btn1(){ document.ge…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论