重学JavaScript Promise API】的更多相关文章

原文地址:JavaScript Promise API 在 JavaScript 中,同步的代码更容易书写和 debug,但是有时候出于性能考虑,我们会写一些异步的代码(代替同步代码).思考这样一个场景,同时触发几个异步请求,当所有请求到位时我们需要触发一个回调,怎么做?Promise 让一切变的简单,越来越多的原生 API 基于 Promise 去实现.那么,什么是 Promise?Promise API 如何使用? 基于 Promise 的 原生 API Promise 主要是为了解决异步的…
首先通过一段代码进入讨论的主题 var r = new Promise(function(resolve, reject){ console.log("a"); resolve() }); setTimeout(()=>console.log("d"), 0) r.then(() => console.log("c")); console.log("b") // a b c d 了解过 Promise 对象的都知道…
同步编程通常来说易于调试和维护,然而,异步编程通常能获得更好的性能和更大的灵活性.异步的最大特点是无需等待."Promises"渐渐成为JavaScript里最重要的一部分,大量的新API都开始promise原理实现.下面让我们看一下什么是promise,以及它的API和用法! Promises现状 XMLHttpRequest API是异步的,但它没有使用promise API.但有很多原生的 javascript API 使用了promise: Battery API fetch…
作者:狐狸家的鱼 GitHub:surRimn 整理自MDN文档 数组 数组是一种类列表对象,长度和元素类型不固定. 描述 访问数组 JavaScript数组的索引是从0开始的,第一个元素的索引为0,最后一个为数组长度减一. 如果指定的索引是一个无效值,不会报错,而是返回undefined. 以数字开头的属性不能用点号引用,必须用方括号. 正则匹配结果所返回的数组 RegExp.exec.String.match.String.replace都会返回这样的数组. 属性 Array.length:…
什么是对象,其实就是一种类型,即引用类型. 一.创建Object类型有两种. ①使用new运算符 <script type="text/javascript"> var box = new Object(); box.name = '李四'; box.age = 28; //new 关键字可以省略 var box = Object(); </script> ②字面量表示法(常用的方法) <script type="text/javascript&…
一.script标签解析 <script>xxx</script>这组标签,是用于在html 页面中插入js的主要方法.它主要有以下 几个属性: 1.charset:可选.表示通过src属性指定的字符集.由于大多数浏览器忽略它,所以很 少有人用它. 2.defer:可选.表示脚本可以延迟到文档完全被解析和显示之后再执行.由于大多数浏 览器不支持,故很少用. 3.language:已废弃.原来用于代码使用的脚本语言.由于大多数浏览器忽略它,所以 不要用了. 4.src:可选.表示包含…
作者:狐狸家的鱼 GitHub:surRimn 整理自MDN文档 带键的集合 映射 Map对象 一个Map对象在迭代时会根据对象中元素的插入顺序来进行 — 一个 for...of 循环在每次迭代后会返回一个形式为[key,value]的数组. 1.语法 new Map([iterable]) iterable可以是一个数组或者其他iterable对象,其元素或为键值对,或为两个元素的数值.每个键值对都添加到新的Map.null会被当作undefined. 2.属性 Map.length:属性le…
1 数组与对象 在 JavaScript 中,一个对象的键只能有两种类型:string 和 symbol.下文只考虑键为字符串的情况. 1.1 创建对象 在创建对象时,若对象的键为数字,或者由 字母+数字 组成,那么键上的引号可以省去: var obj1 = {1: 'one', 2: 'two'} // 等同于 {'1': 'one', '2': 'two'} var obj2 = {'one': 1, 'two': 2} // 等同于 {one: 1, two: 2} 如果对象的键由 数字+…
1. 继承 ES 中只支持实现继承,而且其实现继承主要依靠原型链来实现的. 2. 原型链 ES中 描述了 原型链的概念,并将原型链作为实现继承的主要方法.其基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法. 回顾一下构造函数.原型和实例的关系 每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,而实例都包含一个指向原型对象的内部指针.那么假如我们让原型对象等于另一个类型的实例.那么此时的原型对象将包含一个指向另一个原型的指针,相应地,另一个原型中也包含着一个指向另一…
1. 什么是匿名函数? 匿名函数就是没有名字的函数,有时候也称为< 拉姆达函数>.匿名函数是一种强大的令人难以置信的工具.如下: function a(a1, a2, a3) { // 函数体 } ==其他函数表达式== var a = function(a1, a2, a3) { // 函数体 } 以上两个例子在逻辑上等价,其主要的区别是: 前者会在代码执行前被加载到作用域中,而后者则是在代码执行到那一行的时候才会有定义.另一个重要的区别就是:函数声明会给函数一个指定的名字,而函数表达式则是…