es7新特性 总结

2018-05-09  本文已影响0人  vampire_64a8

Array.prototype.includes

如果传入的数组在数组(this)中返回true, 否则返回false:

['a', 'b', 'c'].includes('a')//true
['a', 'b', 'c'].includes('d')//false

includes和indexof方法很相似,唯一的区别是includes()能找到NAN, 而indexOf()不行

指数运算符

x**y

let num = 3;
num **=2;
console.log(num);//

异步函数(Brain Terlson)

promise现在越来越流行, 一个例子就是客户端fetch API, 它是替代XML HttpRequest检索文件的方案。

function fetchJson(url) {
  return fetch(url)
    .then(request => request.text())
    .then(text => {
      return JSON.parse(text);
    })
    .catch(error => {
      console.log(`ERROR: ${error.stack}`)
    });
}

fetchJson('----url-----').then(obj => console.log(obj));

co使用了Promises和generators让编程风格看起来更像异步的库。

const fetchJson = co(function(){
  try {
    let request = yield fetch(url);
    let text = yield request.text();
    return JSON.parse(text);
  }
  catch(error){
    console.log(`ERROR: ${error.stack}`);
  }
});

es7异步函数语法async基本说是实现了co所做的

async function fetchJson(url){
  try{
    let request = await fetch(url);
    let text = await request.text();
    return JSON.parse(text)
  }
  catch(error){
    console.log(`ERROR: ${error.stack}`);
  }
}

异步函数变体

async function foo()
const foo = async function(){}
const foo = async() => {}
let obj = {async foo(){}}
上一篇 下一篇

猜你喜欢

热点阅读