ES7
判断数组是否包含某个元素
const chs = ["guyun", "feidu", "chengqian"];
console.log(chs.includes("guyun")); // true
console.log(chs.includes("taoran")); // false
指数操作符
console.log(2 ** 10); // 1024
ES8
async 和 await
async 函数
// 特殊的函数,返回值是Promise对象,结果由函数执行的返回值决定
async function fn() {
// 返回的结果不是一个Promise类型的对象,返回的结果就是一个成功的Promise对象
// return "dudu";
// 抛出错误,返回的结果是一个失败的Promise对象
// throw new Error("error!");
// 返回的结果是一个Promise类型的对象
return new Promise((resolve, reject) => {
// resolve("success");
reject("fail");
});
}
const f1 = fn();
console.log(f1); // Promise {}
f1.then(
(value) => {
console.log(value);
},
(reason) => {
console.log(reason);
}
);
await 表达式
// await 必须放在 async 函数中
const p = new Promise((resolve, reject) => {
// resolve("success");
reject("fail");
});
async function fn() {
// 返回值是Promise的值
// 如果结果是失败,要使用try catch捕获
try {
let result = await p;
} catch (error) {
console.log(error); // fail
}
// console.log(result); // success
}
fn();
结合应用:读取三个文件并打印
const fs = require("fs");
function fn1() {
return new Promise((resolve, reject) => {
fs.readFile("./test.txt", (err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
}
async function main() {
let result1 = await fn1();
let result2 = await fn1();
let result3 = await fn1();
console.log(result1.toString());
console.log(result2.toString());
co