目录
2. promise核心逻辑?(promise怎么实现then的链式调用的?)
1. promise常用使用方法
Promise.all(iterable)
Promise.race(reason) [reɪs]
Promise.reject(reason) [rɪˈdʒekt]
Promise.resolve(value) [rɪˈzɒlv]
2. promise核心逻辑?(promise怎么实现then的链式调用的?)
promise的出现是解决回调地狱的问题。
then 是promise对象的方法,要实现 then 的链式调用,
那么就需要 在每一个then方法的执行完成时,返回一个新的promise对象。
返回的新的promise对象,需要接收到上一个promise对象返回的结果 也就是需要把 `successCallback(this.value)` 传递给新的 promise 对象的 resolve 。
其中需要判断上一个 promise 对象返回的值是普通值还是 promise 对象,如果是普通值,直接执行 resolve,
如果是 promise 对象就查看 promise 对象返回的结果,再决定走 resolve 还是 reject
3. ES6 新增了哪些新特性
① let 和 const
let 表示申明变量。
const 表示申明常量,常量定义了就不能改了。对象除外,因为对象指向的地址没变。const 在申明是必须被赋值。两者都为块级作用域。
② 字符串模板 反向单引号 ``
② 扩展运算符 三个点 …
//1. ... 可以将数组转换为 用逗号分隔的参数序列
const tf = ['a','b','b']// ...tf 就可以将数组 ['a','b','b'] 转为 'a','b','b'
function chunwan(){
console.log(arguments)
}
chunwan(...tf) // 等同于 chunwan('a','b','b')
//2. 扩展运算符的应用
//合并数组
const arr1 = ['1','2','3']
const arr2 = ['4','5','6']
const arr3 = arr1.concat(arr2) //es5 用contac 合并
const arr4 =[...arr1,...arr2] //es6 用扩展运算符 合并
//数组拷贝
const arr5 = ['a','b','b']
const arr6 = [...arr5] // es6 用 ... 进行拷贝
//3.将伪数组转为正数组
const divs = document.querySelectorAll(div);
console.log(divs); //此时打印结果是一个对象,无法使用数组的方法
const divArrr = [...div]; // 用... 将它转为数组,,
console.log(divArr);
③ 数组解构
//1.数组解构
const F=['1','2','3']
let [a,b,c,d] = F;
//2.对象解构
const ANIMAL = {
type:'cat',
name:'duorou',
fun:function(){
alert("旋转跳跃")
}
}
//let {type,name,fun} = ANIMAL
let {fun} = AMIMAL
fun()
④ 函数的默认值
⑤ 箭头函数
⑦ for 循环
for of 遍历的是键值对中的值; for in 遍历的是键值对中的键
⑧ class类,原型链的语法糖表现形式
⑨ 导入导出
导入improt;导出export default
⑩ promise
Promise 用于更优雅地处理异步请求。
⑪ async/await
比promise更好的解决了回调地狱
⑫ Symbol,新的基本类型
⑬ Set集合
存储任何类型的唯一值,即集合中所保存的元素是不重复的。类数组结构。
let arrNew = new Set(待去重的数组)
4. ES6 中数组新增了哪些方法
① forEach(),用于遍历数组,无返回值;
② filter(),过滤掉数组中不满足条件的值;
③ map(),遍历数组,返回一个新数组;
④ reduce(),让数组的前后两项进行某种计算,然后返回其值。