美文网首页
异步函数的并行流程

异步函数的并行流程

作者: ElsonYang | 来源:发表于2018-01-03 05:15 被阅读0次

为了让异步任务并行执行,需要将异步函数放入数组中,任务的存放顺序无关紧要.
每个任务都应该调用处理器累积已完成的计数值.

q.png
const fs = require('fs')

let completeTasks = 0 //统计完整的异步函数计数器

let tasks = [] //要执行的异步函数

let wordCounts = {} //存储每一个异步函数的读取结果

let fileDir = './text' //目标目录

//检查是否所有并行异步函数执行完成
function checkIfComplete(){
    completeTasks++
    if(completeTasks == tasks.length){//表示所有的异步函数都并行执行完了
        for(var index in wordCounts){ //循环打印出结果
           console.log(`${index} : ${wordCounts[index]}`)
        }
    }
}

function countWordsInText(text){
    let words = text.toString().toLowerCase().split(/\W+/).sort()
    for(var index in words){
        var word = words[index]
        if(word){
            wordCounts[word] = (wordCounts[word]) ? wordCounts[word] + 1 : 1
        }
    }
}

//获取目录下的文件
fs.readdir(fileDir,function(err,files){
    
    if(err) throw err

    for(let index in files){
        
        let task = function(){
            fs.readFile(`${fileDir}/${files[index]}`,(err,data)=>{
                countWordsInText(data)
                checkIfComplete()
            })
        }
        tasks.push(task)
        
    }
    for(var items in tasks){
        tasks[items]()
    }
})

相关文章

  • 异步函数的并行流程

    为了让异步任务并行执行,需要将异步函数放入数组中,任务的存放顺序无关紧要.每个任务都应该调用处理器累积已完成的计数值.

  • GCD 相关函数

    串行同步 串行异步 并行同步 并行异步 主队列同步 会死锁 主队列异步 异步处理耗时,回主线程刷新UI 栅栏函数 ...

  • AsyncJS 异步流程控制DEMO详细介绍

    AsyncJS 异步流程控制DEMO详细介绍 1. 基本流程 串行流程、并行流程、混合执行series, wate...

  • ObjC-多线程之GCD

    介绍 基本概念 串行和并行 并发和并行 下图描述的就是并发和并行的区别。 同步和异步 函数说明 Dispatch ...

  • 42.async/await

    async异步函数的写法 async关键字用于声明一个异步函数 async异步函数的执行流程 如果只是在funct...

  • GCD串行并行队列 与 同步异步执行的各种组合 及要点分析

    1、异步函数和并行队列 注意:这些任务都是在创建完之后才执行的。异步函数+并发队列,可以新建线程,各线程也是并发执...

  • 企业IT架构笔记7 异步化

    核心设计思路:串行、同步 --> 异步、并行!解决大容量高并发、及高性能问题。 业务处理异步化:通过业务处理流程异...

  • 学习OC

    1.函数和队列的区别?同步函数和异步函数的区别?串行队列和并行队列的区别?什么是栅栏函数 且有什么注意点? 栅栏方...

  • 多线程GCD的使用

    一、同步/异步、串行/并行的区别 1.同步/异步 同步/异步是指线程与线程之间的关系。 2.串行/并行 串行、并行...

  • iOS多线程小结

    同步异步串行并行 同步串行:不开启线程 同步并行:不开启线程 异步串行:最多开启一个线程 异步并行:开启线程 同步...

网友评论

      本文标题:异步函数的并行流程

      本文链接:https://www.haomeiwen.com/subject/zavcnxtx.html