//引入模块
let fs=require('fs');
//异步读文件方法,但是同步执行function read(url) {//new Promise 需要传入一个executor 执行器//executor需要传入两个函数 resolve rejectreturn new Promise((resolve,reject)=>{fs.readFile(url,'utf8',function (err,data) {if(err){reject(err)}else{resolve(data);}})})
};//缺点 套了一个promise,而且捕获了2次,这两个请求没有依赖关系,时间叠加了
// read('./name.txt').then((data)=>{//     let obj={};
//     obj.name=data;
//     read('./age.txt').then((data)=>{//         obj.age=data;
//         console.log(obj);
//     },(err)=>{//         console.log(err);
//     })
//
// }, (err)=>{//     console.log(err);
// });//回调地狱 链式调用
//相对好点的方法,同步两个异步依次执行 异常用catch捕获
// let obj={};
// read('./name.txt').then((data)=>{//     obj.name=data;
//     return read('./age.txt')
//     }).then((data)=>{ //如果promise返回promise可以继续then
//     obj.age=data;
//    return obj //将结果向下继续传递
// }).then((data)=>{//     console.log(data) //单独处理结果
// }).catch((err)=>{//     console.log(err)
// });//all方法是promise是类上自带的方法,并发读取,失败一个都失败了,时间只是一个读取的时间
//第一个参数 传递的是数组,数组装的是一个个promise对象
//调用后会再次返回一个promise实例
//最好的写法
Promise.all([read('./name.txt'),read('./age.txt')]).then(([name,age])=>{
//data就是promise执行成功的结果类型是数组
    console.log({name,age});
}).catch((err)=>{console.log(err)
})//race如果一个失败了,都失败,如果一个成功了都成功,很少用
// Promise.race([read('./name.txt'),read('./age1.txt')]).then((data)=>{// //data就是promise执行成功的结果类型是数组
//     console.log(data);
// }).catch((err)=>{//     console.log(err)
// })

转载于:https://www.cnblogs.com/null11/p/7509467.html

es6异步编程 Promise 讲解 --------各个优点缺点总结相关推荐

  1. 转: ES6异步编程:Thunk函数的含义与用法

    转: ES6异步编程:Thunk函数的含义与用法 参数的求值策略 Thunk函数早在上个世纪60年代就诞生了. 那时,编程语言刚刚起步,计算机学家还在研究,编译器怎么写比较好.一个争论的焦点是&quo ...

  2. 异步编程Promise、Generator和Async

    在JavaScript的世界里,对于异步编程存在如下几种方案: 1.回调函数: 2.事件触发监听: 3.发布订阅者模式: 4.Promise. 首先介绍Promise,然后介绍ES6提供的生成器函数, ...

  3. 支付宝异步回调返回success_深入解决异步编程Promise对象的学习

    1.什么是Promise 简单来说Promise是异步编程的一种解决方案 Promise是ES6中的特性. 什么是异步操作? 网络请求中,对端服务器处理需要时间,信息传递过程需要时间,不像我们本地调用 ...

  4. ES6异步编程: co函数库的含义与用法

    co 函数库是著名程序员 TJ Holowaychuk 于2013年6月发布的一个小工具,用于 Generator 函数的自动执行. 比如,有一个 Generator 函数,用于依次读取两个文件. v ...

  5. Promise异步编程

    异步编程Promise 1.异步编程 2,回调函数 3,回调地狱 4,Promise 4.1,prmise的语法格式: 4.2,Promise链式 4.3,Promise.all() 1.异步编程 有 ...

  6. 大神带你玩转异步编程,理论与实践齐飞,敢说是目前最全的讲解了

    要完全理解异步编程需要先理解几个概念 任务 我给任务的定义是完成某项功能的单元模块,任务有大有小,站在操作系统的角度,一个程序就是一个任务,每当运行一个程序就会创建一个新的任务,它在操作系统中还有一个 ...

  7. ES6读书笔记-Promise与异步编程的爱恨纠葛

    异步编程的背景 JS 引擎建立在单线程事件循环的概念上. 单线程( Single - threaded) 意味着同一时刻只能 执行一段代码, 与 Java 或 C++这种允许同时执行多段不同代码的多线 ...

  8. ES6/7 异步编程学习笔记

    前言 在ES6的异步函数出现之前,Js实现异步编程只有settimeout.事件监听.回调函数等几种方法 settTmeout 这种方法常用于定时器与动画的功能,因为其本质上其实是浏览器的WebAPI ...

  9. ES6模块化与异步编程高级用法

    ES6模块化与异步编程高级用法 一.学习目标 能够知道如何使用ES6的模块化语法 能够知道如何使用Promise解决回调地域的问题 能够知道如何使用async/await 简化Promise的调用 能 ...

  10. 异步编程:一次搞懂Promise,async,await

    文章目录 前言 一.回调函数 二.Promise 三.错误处理 四.async/await await使用时的陷阱 1 2 3 总结 前言 异步编程允许我们在执行一个长时间任务时,程序不需要进行等待, ...

最新文章

  1. 判断一个数是否是2的倍数----------面试算法
  2. python随机抽号_随手小代码——Python 从集合中随机抽取元素
  3. python pip工具命令_python 工具链 包管理工具 pip
  4. Web应用安全————多点登录互斥
  5. Python super() 函数的用法及实例
  6. linux系统获取光盘信息api,C++ 通过WIN32 API 获取逻辑磁盘详细信息的几种方法
  7. 白板机器学习笔记 P39-P45 指数族分布
  8. python 文本换行_Python学习入门(23)—读写文件
  9. [转载] python json 编码(dump/dumps:字典转化为json)、解码(load/loads:json转化为字典)
  10. 5G标准化工作遇阻,标准推出时间或将延期
  11. iOS9 获取手机的唯一标识(一)——CFUUID、NSUUID、IDFA、IDFV、UDID、OpenUDID 的区别
  12. java毕业生设计医疗机构药房管理系统软件开发计算机源码+系统+mysql+调试部署+lw
  13. 如何连接在同一个局域网内的打印机
  14. 重装系统时的硬盘格式化
  15. 「游戏建模」3DMAX节点材质编辑器详解
  16. 转载大牛对Microsoft的认识
  17. MFC中关于char[]转换成LPCWSTR的问题
  18. 04-如何选购台式电脑显卡?小白装机通俗易懂的独立显卡知识指南
  19. 北京大学计算机系丁万东,第八届北京大学程序设计大赛圆满落幕 陈瑜希等同学获冠军...
  20. Element组件引发的Vue中mixins使用,写出高复用组件

热门文章

  1. 自动超频_超频的几种方式
  2. 楼层平面放线及标高实测记录_建筑平面图怎么看?教你这样看图,新手也能秒懂...
  3. LINUX编译automake
  4. Freeswitch在内网,由服务器防火墙映射出来,IMSDROID作为被叫的问题
  5. 在JFrame窗口上绘制文字,用PrintJob打印出来
  6. 最近使用VirtualBox安装虚拟机,频繁崩溃。是不是有什么隐藏限制?
  7. VS中编辑器显示行号
  8. 怪事:两台linux的samba共享目录,一个能访问一个不能访问
  9. 上海项目危机经历与感想
  10. 管理感悟:可接受的不参加培训的理由