ES6语法 Promise Iterator
类和对象
基本定义:
class Parent{
constructor(name='lmx'){ //name= 默认值
this.name=name
}
}
let v_parent = new Parent('v');
console.log(v_parent);
//输出Parent {name: "v"}
继承
class Parent{
constructor(name='lmx'){
this.name=name
}
}
class Child extends Parent{
constructor(name=’child’){
super(name); //如果super中没有参数则都按照父类的默认值
}
}
console.log(new Child())
getter和setter
class Parent{
constructor(name='lmx'){
this.name=name
}
}
get longName(){
return ‘mk’+this.name;
}
set longName( val){
this.name = val
}
let v = new Parent();
console.log(v.longName()) //调用get方法
v.longName = ‘hello’ //调用set方法
console.log(v.longName())
静态方法:static定义的是类的方法只有类能调用
class Parent{
constructor(name='lmx'){
this.name=name
}
static tell(){
console.log(‘tell’)
}
Parent.tell()
}
静态属性:
ES6明确规定,Class内部只有静态方法,没有静态属性,但是可以通过 类名.变量 来定义
class Parent{
constructor(name='lmx'){
this.name=name
}
}
Parent.abc=’123’
Promise
Promise.all([ ]).then() 表示把多个Promise实例当做一个Promise实例,当所有Promise实例状态发生改变之后,新的Promise才能发生改变,即当三个loadImg实例都加载完之后才会触发Promise.all方法,才会then,才执行showImg
//所有图片加载完了之后才一起显示
function loadImg(src){
return new Promise((resolve,reject)=>{
let img = document.createElement('img');
img.src= src;
img.onload = function(){ resolve(img) };
img.onerror = function(){ reject(err)}
})
}
function showImg(imgs){
imgs.forEach(item=>{
document.body.appendChild(item)
})
};
Promise.all([
loadImg('http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg'),
loadImg('http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg'),
loadImg('http://img06.tooopen.com/images/20160818/tooopen_sy_175833047715.jpg')
]).then(showImg)
Promise.race ([ ]).then() 多个实例中有一个状态率先改变之后,race实例会改变,其他的便忽略不管了
//只要有图片加载出来了就显示
function loadImg(src){
return new Promise((resolve,reject)=>{
let img = document.createElement('img');
img.src= src;
img.onload = function(){ resolve(img) };
img.onerror = function(){ reject(err)}
})
}
function showImg(imgs){
imgs.forEach(item=>{
document.body.appendChild(item)
})
};
Promise.race([
loadImg('http://img02.tooopen.com/images/20150928/tooopen_sy_143912755726.jpg'),
loadImg('http://img06.tooopen.com/images/20160818/tooopen_sy_175866434296.jpg'),
loadImg('http://img06.tooopen.com/images/20160818/tooopen_sy_175833047715.jpg')
]).then(showImg)
Iterator接口
在数组中的应用
let arr = ['hello','world'];
let map = arr[Symbol.iterator]();
console.log(map.next());
console.log(map.next());
console.log(map.next());
//输出,done变为true之后循环截止

自定义iterator接口
for...of循环
let obj = {
start:[3,5,6],
end:[4,8,9],
[Symbol.iterator](){ //iterator小写
let self= this;
let index = 0;
let arr = self.start.concat(self.end);
let len = arr.length;
return{
next(){
if(index<len){
return {
value:arr[index++],
done:false}
}else{
return {
value:arr[index++],
done:true
}
}
}
}
}
} ;
for(let key of obj){
console.log(key)
}

ES6语法 Promise Iterator的更多相关文章
- ES6语法 promise用法
ES6语法 promise用法 function doSomething(){ return new Promise((resolve,reject)=>{ resolve('jjjj');// ...
- es6 语法 (iterator和for...of循环)
Iterator遍历器 遍历器(Iterator)就是这样一种机制.它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只要部署Iterator接口,就可以完成遍历操作(即依次处理该数据 ...
- ES6语法——Promise对象
一.概念 Promise是异步编程的一种解决方案(解决回调地狱的问题),是一个能够获取异步操作信息的对象.Promise的内部保存着某个未来才会结束的事件(通常是一个异步操作) 二.特点 1.Prom ...
- vuex+Es6语法补充-Promise
Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式,采用 集中式存储管理 单页面的状态管理/多页面状态管理 使用步骤: // 1.导入 import Vuex from 'vuex' // ...
- ES6语法知识
let/const(常用) let,const用于声明变量,用来替代老语法的var关键字,与var不同的是,let/const会创建一个块级作用域(通俗讲就是一个花括号内是一个新的作用域) 这里外部的 ...
- ES6之Promise用法详解
一 前言 本文主要对ES6的Promise进行一些入门级的介绍.要想学习一个知识点,肯定是从三个方面出发,what.why.how.下面就跟着我一步步学习吧~ 二 什么是Promise 首先是what ...
- 常用的ES6语法
1. let.const 和 block 作用域 let 允许创建块级作用域,ES6 推荐在函数中使用 let 定义变量,而非 var: var a = 2; { let a = 3; console ...
- 把JavaScript代码改成ES6语法不完全指南
目录 * 核心例子 * 修改成静态变量(const)或块级变量(let) * 开始修改 * 疑问解释(重复定义会发生什么) * 疑问解释(let的块级作用域是怎样的) * 疑问解释(const定义的变 ...
- 在Node中使用ES6语法
Node本身已经支持部分ES6语法,但是import export,以及async await(Node 8 已经支持)等一些语法,我们还是无法使用.为了能使用这些新特性,我们就需要使用babel把E ...
随机推荐
- 洛谷P5280 [ZJOI2019]线段树 [线段树,DP]
传送门 无限Orz \(\color{black}S\color{red}{ooke}\)-- 思路 显然我们不能按照题意来每次复制一遍,而多半是在一棵线段树上瞎搞. 然后我们可以从\(modify\ ...
- socket.io中 connect与connection的区别
参考网址:https://blog.csdn.net/sinat_18474835/article/details/80115961
- SQL 概述
SQL是用于在数据库中存储,操作和检索数据的标准语言. 本教程教你如何使用SQL:MySQL,SQL Server,MS Access,Oracle,Sybase,Informix,Postgres和 ...
- JavaScript我学之八善变的this---函数执行上下文
本文是金旭亮老师网易云课堂的课程笔记,记录下来,以供备忘. 函数执行上下文 当函数运行时,通过this,函数可以获取它运行所需的外界环境的相关信息(比如某变量的值,另一个对象的引用等). this引用 ...
- Ubuntu16.04 将其他磁盘挂载到 /home, 解决/home空间不足
本文转载自: https://blog.csdn.net/handsome_for_kill/article/details/52654724 1.查看磁盘信息 sudo fdisk -l 查看分区的 ...
- 多线程处理list
package com.zhx.web.invoice.service; import java.util.*; import java.util.concurrent.Callable; impor ...
- ECMAScript 6 变量的解构赋值
1.数组的结构赋值 1.1 基本用法 可以用“模式匹配”的写法给数组的元素赋值,只要等号两边的模式相同,左边的变量就会被赋予对应的值.注意:元素的值和位置是一一对应关系,如果对应的位置没有值,就会解构 ...
- 理解DP(持续更新)
理解DP author: thy from buaa 初见 dynamic programming(可以理解为动态刷表法 其实这里的programming并不是编程而是规划.设计表格的意思) 关于动态 ...
- ETL测试教程
在我们了解ETL测试之前,先了解有关商业智能和数据仓库的重要性. 让我们开始吧 - 什么是BI? 商业智能是收集原始数据或业务数据并将其转化为有用和更有意义的信息的过程. 原始数据是一个组织每日事务的 ...
- 【BZOJ4842】[Neerc2016]Delight for a Cat 线性规划+费用流
[BZOJ4842][Neerc2016]Delight for a Cat Description ls是一个特别堕落的小朋友,对于n个连续的小时,他将要么睡觉要么打隔膜,一个小时内他不能既睡觉也打 ...