美文网首页全栈记
8 ES6 Promise基础认知

8 ES6 Promise基础认知

作者: 官清岁月 | 来源:发表于2019-05-11 08:08 被阅读0次

1、异步编程 ->离不开回调机制 -> 我们希望更好的管理“异步代码”,保证其有好的扩展性、维护性

无论在浏览器环境还是node环境,我们都会使用JavaScript完成各种异步操作,如浏览器环境中的定时器、事件、ajax等,node环境中的文件读取、事件等; -> JS、nodeJS都是单线程,说明一定有其它xx另开启新线程辅助它们执行;

异步编程遇到的问题:回调地狱(其是一种现象,虽可实现功能,但扩展性/维护性较差,不符合“开闭设计原则”)、try{}catch{}只能捕获同步代码出现的异常、并发的异步操作不好解决;

- - - >>> Promise之前的解决方案:(1).jQuery中的Deffered();Callbacks(); (2).引入第三方库,例如Loadsh提供的after();高阶函数辅助回调操作(其就是更高效的操作回调函数);[Loadsh: js工具库,提供各种函数提升开发效率,如柯里化、防抖、节流等];- ->补充:jQuery库主要用于浏览器端,其挂载到window上,而且实例方法操作dom,静态方法没问题,但node环境中没有window, 使用的global,而且也不直接操作dom,因此jQuery解决方案在node中失效;Loadsh库可以在node环境中运行,但需引入第三方库;->前两者主要解决回调地狱问题,try{}catch{}捕获异步代码异常需要“其它笨方法”解决;并发的异步操作可使用 after();或者“发布订阅模式”解决;

- - - >>> ES6 Promise();更高效解决上述所有异步问题,但依旧有很强的回调痕迹,ES6 Generator + Co库,以及ES7的async await可争取让异步代码看起来与同步代码相同,解决方案更加优雅~

(1).常见异步问题及"老旧"解决方案:

nodejs下载Loadsh库:npm i --save lodash; 网址:https://www.lodashjs.com/

2、Promise(); -> ES6新内容,Babel无法对其进行”语法降级“,因此兼容性不好;其管理异步代码的思想借鉴了jQuery以及第三方库;

- - ->>>new Promise(); promise.then();解决回调地狱;promise.catch().finally{};//解决try{}catch{}捕获异步代码错误;Promsie.all(); Promise.race();解决同步并发的异步问题;

3、ES6 Promise可解决回调地狱、try{}catch{}、同步并发的异步问题,但解决回调地狱问题中依旧有很明显的回调痕迹 -> ES6中generator生成器+promise对象+CO库、ES7中的async/await 它们可以让异步代码看起来与同步代码一样,更加优雅;

相关文章

  • 8 ES6 Promise基础认知

    1、异步编程 ->离不开回调机制 ->我们希望更好的管理“异步代码”,保证其有好的扩展性、维护性 无论在浏览器环境...

  • 第八周第二天笔记

    ES6之Promise类 1 Promise类基础知识解读 promise类的静态属性方法分类:resolve()...

  • ES6 Promise

    在学习Promise之前,可以看一下张鑫旭大神这一篇 ES6 JavaScript Promise的感性认知 ...

  • es6 Promise 学习笔记2 链式调用

    es6 Promise 学习笔记1 基础代码解析 这期讲个复杂点的例子 then里的回调返回一个 Promise ...

  • 来,用ES6写个Promise吧

    本文采用es6语法实现Promise基本的功能, 适合有javascript和es6基础的读者,如果没有,请阅读 ...

  • ES6 中的 Promise(二)

    《深入理解ES6》阅读随笔 对于 Promise 中的一些基础概念,需要了解一下: Promise 的生命周期 P...

  • ES6--Promise

    学过ES6的同学大概都知道Promise,可想而知Promise在ES6中很重要。 Promise对象代表了未来将...

  • Promise.done(),Promise.finally()

    es6 Promise.done(),Promise.finally()promise对象的finally函数为什...

  • ES6 Promise

    ES6 promise 的一些常用方法 Promise.prototype.then() Promise.prot...

  • ES6异步:Promise

    #Promise迷你书通过 ES6 Promise 和 jQuery Deferred 的异同学习 Promise

网友评论

    本文标题:8 ES6 Promise基础认知

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