作为 Modern JavaScript 基础设施的一部分,Promises 对前端开发者而言异常重要.它是 async/await 语法的基础,是 JavaScript 中处理异步的标准形式.并且,未来的 Web API,只要是异步的,都会以 Promises 的形式出现. 1.实现 Promises/A+ 规范 1.1.前期工作 An open standard for sound, interoperable JavaScript promises https://promisesaplu…
本文是一起学习造轮子系列的第一篇,本篇我们将从零开始写一个符合Promises/A+规范的promise,本系列文章将会选取一些前端比较经典的轮子进行源码分析,并且从零开始逐步实现,本系列将会学习Promises/A+,Redux,react-redux,vue,dom-diff,webpack,babel,kao,express,async/await,jquery,Lodash,requirejs,lib-flexible等前端经典轮子的实现方式,每一章源码都托管在github上,欢迎关注~…
目录 介绍 译文 1. 术语(Terminology) 2. 要求(Requirements) 2.1 Promise状态 2.2 then方法 2.3 Promise解析程序 3. 注释 3.1 platform code 3.2 3.3 3.4 3.5 3.6 后记 介绍 翻译Promises/A+规范的原因在于,在学习Promise时想要了解关于其规范的详细介绍,但是实际搜了很多文章的介绍似乎大多都是"残缺"的,有的文章虽然说是介绍Promises/A+规范,但其实或是简单介绍,…
为什么需要异步编程方式 一个函数执行之后,在它后面顺序编写的代码中,如果能够直接使用它的返回结果或者它修改之后的引用参数,那么我们通常认为该函数是同步的. 如果一个函数的执行结果或者其修改的引用参数,需要通过设置回调函数或者回调事件的方式来获取,而在其后顺序编写的代码中无法直接获取的话,那么我们通常认为这样的函数是异步的. 阻塞带来的问题是当前线程(或进程)会陷入等待,一直等到阻塞结束,这样就会造成线程(或进程)资源的浪费.所以通常认为阻塞是不够高效的. 如果要编写非阻塞代码,使用同步方式会变得…
Promises是一种异步编程模型,通过一组API来规范化异步操作,这样也能够让异步操作的流程控制更加容易. 下面的代码是假设执行一个异步队列,每一项都会使用上一项返回的数据: function nest(url, params, fn) { $.getJSON(url, params, function(data) { console.log(data); fn.call(this); }); } nest('promise.php', {a:1}, function(data1) { nes…
本文来自四火哥的翻译 CommonJS是一组javascript编程规范,而promise是其中之一. 简而言之,promises是一种令代码的异步行为变得更加优雅的软件抽象.在基本的定义中,代码可能一直是这样写的 getTweetsFor("domenic", function (err, results) { // the rest of your code goes here. }); 现在你的方法有一个返回值,叫做promise,它代表操作的最终结果. var promiseF…
一.前言 Promises/A是由CommonJS组织制定的异步模式编程规范,有不少库已根据该规范及后来经改进的Promises/A+规范提供了实现 如Q, Bluebird, when, rsvp.js, mmDeferred, jQuery.Deffered()等. 虽然上述实现库均以Promises/A+规范作为实现基准,但由于Promises/A+是对Promises/A规范的改进和增强,因此深入学习Promises/A规范也是不可缺少的. 本文内容主要根据以下内容进行学习后整理而成,若…
原文地址:https://promisesaplus.com/ 本篇为原文翻译+个人理解,若有谬误请各位指正,谢谢. 尊重原创,转载请注明来自:http://www.cnblogs.com/fsjohnhuang/p/4139172.html  ^_^肥仔John 一个可靠的可共同协作的JavaScript Promise开放标准 promise代表一个异步操作的最终结果.主要通过promise的then方法订阅其最终结果的处理回调函数,和订阅因某原因无法成功获取最终结果的处理回调函数. 本说明…
随着多终端.多平台.多业务形态.多技术选型等各方面的发展,前后端的数据交互,日益复杂. 同一份数据,可能以多种不同的形态和结构,在多种场景下被消费. 在理想情况下,这些复杂性可以全部由后端承担.前端只管从后端接口里,拿到已然整合完善的数据. 然而,不管是因为后端的领域模型,还是因为微服务架构.作为前端,我们感受到的是,后端提供的接口,越发不够前端友好.我们必须自行组合多个后端接口,才能获取到完整的数据结构. 面向领域模型的后端需求,跟面向页面呈现的前端需求,出现了不可调和的矛盾. 这种背景下,本…
对大多数 Web 应用来说,页面性能直接影响着流量.这是一个经常为我们所忽视的事实.用户长时间的等待流失的不仅仅是跳出率.转化率,还有对产品的耐心和信赖.很多时候我们没有意识到性能问题,那是因为平常开发使用的都是高效的设备和网络.而到了真实世界中却会发现,实际用户的网络环境会更加复杂,而如果使用的是移动设备的话,有限的计算能力也会拖慢代码的解析执行,这些都会影响页面的渲染效率. Web 应用的加载速度很大程度上取决于资源的大小,下面是 Youtube 桌面端页面通过 PageSpeed Insi…