博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
es6 promise 前凑
阅读量:5830 次
发布时间:2019-06-18

本文共 1240 字,大约阅读时间需要 4 分钟。

/**  *@ promise前凑  *@ promise 好处:  *@ 1.可以解决一些异步问题(异步回调--回调地狱,回调的嵌套关系)  *  */
//需求 当异步读取2个文件完成后 多个回调同步结果的情况 ,(需要读取a和b 等2个文件,当读取完后需要显示)(a.txt 里 hello ; b.txt 里 word) //方法1 使用回调函数 callback, 当我们读取完后 判断是不是读取2次,如果是就显示
let fs = require("fs");//我们 可以先定义一个 after 方法,判断2次执行完显示结果function after(times, callback) {    let arr=[];    return function (data) {        arr.push(data);        //如果执行完2次 显示结果        if (--times == 0){            callback(arr);        }    }}let fn =after(2,function (data) {    console.log(data);});fs.readFile("a.txt", "utf8", function (err, data) {   fn(data)});fs.readFile("b.txt","utf8",function (err, data) {    fn(data)}); //执行后  查看控制台 ===》[ 'hello', 'Word' ]

// 方法2 使用 发布订阅  模式    发布订阅 发布(发布时一次执行) 订阅(先把他暂存起来)

let fs = require("fs");let event = {    arr: [],    result: [],    on(fn) {        this.arr.push(fn);    },    emit(data) {        this.result.push(data);        this.arr.forEach(fn=>fn(this.result));    }};event.on(function (data) {    if(data.length==2){        console.log(data);//这是最终输出的结果    }})fs.readFile("a.txt","utf8",function (err,data) {    event.emit(data);})fs.readFile("b.txt","utf8",function (err,data) {    event.emit(data);})

输出的结果 和方法1  一样

  

 

转载于:https://www.cnblogs.com/liujzcom/p/9490636.html

你可能感兴趣的文章
Jvm(64),方法调用----解析
查看>>
[转]NLP数据集
查看>>
请自行检查是否安装VC9运行库??
查看>>
[PHP]算法-堆排序的PHP实现
查看>>
WPF 3D Transparency Depth-Order Sorting
查看>>
@getMapping与@postMapping
查看>>
RDIFramework.NET V3.3 Web版新增系统公告、系统新闻模块方便需要的客户
查看>>
云主机文件系统readonly处理案例
查看>>
006-网页嵌入数据Data URI scheme
查看>>
C# 加密解密
查看>>
关于函数strchr();
查看>>
ScottGu发布了.net web产品的路线图
查看>>
WCF托管
查看>>
OpenTest:教你在自动化脚本中增加选择文件的支持
查看>>
电子书下载:Programming Microsoft LINQ in Microsoft .NET Framework 4
查看>>
创建好SD卡的AVD ,那如何把文件导入SD 卡里面供模拟器使用
查看>>
Windows Azure Web Site (6) 使用FTP发布Azure Web Site
查看>>
Azure 认知服务 (2) 计算机视觉API - 分析图像
查看>>
POJ 3013 Big Christmas Tree (SPFA)
查看>>
mysql SQL_CALC_FOUND_ROWS
查看>>