串行,第一个完成后,去执行第二个第二个异步任务,使用next()尾函数。首先我么想完成三个任务,task1,task2,task3,如图:

实现方式1:

  1. var fs = require("fs");
  2. function task1(){
  3. fs.readFile('./a.txt',function(err,data){
  4. console.log(data.toString());
  5. task2();
  6. })
  7. }
  8.  
  9. function task2(){
  10. fs.readFile('./b.txt',function(err,data){
  11. console.log(data.toString());
  12. task3();
  13. })
  14. }
  15.  
  16. function task3(){
  17. fs.readFile('./b.txt',function(err,data){
  18. console.log(data.toString());
  19. })
  20. }
  21. task1();

实现方式2:使用task函数

  1. var fs = require("fs");
  2. function task1(){
  3. fs.readFile('./a.txt',function(err,data){
  4. console.log("a---"+data.toString());
  5. next();
  6. })
  7. }
  8.  
  9. function task2(){
  10. fs.readFile('./b.txt',function(err,data){
  11. console.log("b---"+data.toString());
  12. next();
  13. })
  14. }
  15.  
  16. function task3(){
  17. fs.readFile('./b.txt',function(err,data){
  18. console.log("c---"+data.toString());
  19. })
  20. }
  21. //串行可以在任务1中调用任务2 ,任务2调用任务3
  22. //第二种方式:
  23. var taskArray = [task1,task2,task3];
  24. function next(){
  25. //数组中shift方法,删除第一个元素
  26. var task = taskArray.shift();
  27. console.log(task)
  28. task();
  29. }
  30.  
  31. next();

或者:

  1. var fs = require("fs");
  2. function task1(next){
  3. fs.readFile('./a.txt',function(err,data){
  4. console.log("a---"+data.toString());
  5. next();
  6. })
  7. }
  8.  
  9. function task2(next){
  10. fs.readFile('./b.txt',function(err,data){
  11. console.log("b---"+data.toString());
  12. next();
  13. })
  14. }
  15.  
  16. function task3(next){
  17. fs.readFile('./b.txt',function(err,data){
  18. console.log("c---"+data.toString());
  19. })
  20. }
  21. //串行可以在任务1中调用任务2 ,任务2调用任务3
  22. //第二种方式:
  23. var taskArray = [task1,task2,task3];
  24. (function(){
  25.  
  26. function next(){
  27. //数组中shift方法,删除第一个元素
  28. var task = taskArray.shift();
  29. console.log(task)
  30. task(next);
  31. }
  32. next();
  33. })()

【06】next() 伪函数的更多相关文章

  1. 《HelloGitHub月刊》第06期

    前言 <HelloGitHub>月刊做到第06期了(已经做了6个月了),在GitHub上获得了100+的stars,虽然不多,但是我很知足了,说明有人觉得这个项目是有价值的.同时园子中的' ...

  2. iOS系列 基础篇 06 标签和按钮 (Label & Button)

    iOS系列 基础篇 06 标签和按钮 (Label & Button) 目录: 标签控件 按钮控件 小结 标签和按钮是两个常用的控件,下面咱们逐一学习. 1. 标签控件 使用Single Vi ...

  3. javaSE基础06

    javaSE基础06 一.匿名对象 没有名字的对象,叫做匿名对象. 1.2匿名对象的使用注意点: 1.我们一般不会用匿名对象给属性赋值的,无法获取属性值(现阶段只能设置和拿到一个属性值.只能调用一次方 ...

  4. 异步编程系列06章 以Task为基础的异步模式(TAP)

    p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提 ...

  5. javascript基础06

      javascript基础06 splice var del_arr = del.splice(0,2); //删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返 ...

  6. Linux 第06天

    Linux 第06天 1.SAMBA服务器————(linux和windows的文件共享) 1.1 安装 yum install samba -yum 1.2 配置文件 /etc/samba/smb. ...

  7. plsql11.06注册码

    plsql11.06注册码:Product Code(产品编号):4t46t6vydkvsxekkvf3fjnpzy5wbuhphqzserial Number(序列号):601769password ...

  8. shell脚本中的几个括号总结(小括号/大括号/花括号)--from:http://www.cnblogs.com/hanyan225/archive/2011/10/06/2199652.html

    在Shell中的小括号,大括号结构和有括号的变量,命令的用法如下: 1.${var}2.$(cmd)3.()和{}4.${var:-string},${var:+string},${var:=stri ...

  9. VMware10.06精简版安装后台运行

    VMware10.06精简版安装时会出现一个安装功能选择菜单,里面有一条后台运行必选功能,一般人会跳过条.当你打算在服务器上用vmware时,一定要安装后台运行服务,否则你无法换出正在运行的后台虚拟机 ...

随机推荐

  1. 【计数】cf223C. Partial Sums

    考试时候遇到这种题只会找规律 You've got an array a, consisting of n integers. The array elements are indexed from ...

  2. eclipse中使用git上传项目

    eclipse中使用git上传项目 先需要上传到本地仓库 先找到此选项打钩 再如下 再添加的属性则可以自动填充邮箱和密码 之后 右键选择import 点击找到git 选中 下一步  如果没有找到git ...

  3. Django2.1集成xadmin管理后台所遇到的错误集锦,解决填坑

    django默认是有一个admin的后台管理模块,但是丑,功能也不齐全,但是大神给我们已经集成好了xadmin后台,我们拿来用即可,但是呢,django已经升级到2.1版本了,xadmin貌似跟不上节 ...

  4. wampserver怎么设置外网可访问

    wampserver配置httpd.conf允许外网访问? 在电脑上开启wamp服务后,默认是禁止外部网络访问的,如果您想要同一局域网中的设备能够访问PC上的web项目,则需要对httpd.conf文 ...

  5. UVA 1594 Ducci Sequence(紫书习题5-2 简单模拟题)

    A Ducci sequence is a sequence of n-tuples of integers. Given an n-tuple of integers (a1, a2, · · · ...

  6. Fibonacci again and again HDU - 1848

    任何一个大学生对菲波那契数列(Fibonacci numbers)应该都不会陌生,它是这样定义的: F(1)=1; F(2)=2; F(n)=F(n-1)+F(n-2)(n>=3); 所以,1, ...

  7. Python抓取视频内容

    Python抓取视频内容 Python 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年.Python语法简洁而清晰,具 ...

  8. Lambda表达式的本质

    //.net 1.0写法 /*delegate bool MyMethod(string s); bool myMethod(string s) { return s.IndexOf("ab ...

  9. 计算两个日期之间的天数差C++/java

    1--Java 分析:调用java中Calendar类 int days(Date date1,Date date2){ Calendar cal = new Calendar.getInstance ...

  10. MySql数据库 - 2.启动与关闭

    MySql服务的启动: 右键计算机 - 管理 - 服务和应用程序 - 服务 - 右键 MySQL80 可以启动/停止MySQL(也可以点击属性 改变启动类型:手动/自动). 自动启动状态下,每次打开计 ...