持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第9天
点击查看活动详情
一、使用箭头函数应注意什么/箭头函数和普通函数的区别
用了箭头函数,this 就不是指向 window,而是父级(指向是可变的)
不能够使用 arguments 对象
不能用作构造函数,这就是说不能够使用 new 命令,否则会抛出一个错误
不可以使用 yield 命令,因此箭头函数不能用作 Generator 函数
二、setTimeout、Promise、Async/Await 的区别
事件循环中分为宏任务队列和微任务队列
其中 setTimeout 的回调函数放到宏任务队列里,等到执行栈清空以后执行
promise.then 里的回调函数会放到相应宏任务的微任务队列里,等宏任务里面的同步代码执行完再执行
async 函数表示函数里面可能会有异步方法,await 后面跟一个表达式
async 方法执行时,遇到 await 会立即执行表达式,然后把表达式后面的代码放到微任务队列里,让出执行栈让同步代码先执行
三、promise 只有成功和失败 2 个状态,怎么让一个函数无论成功还是失败都能被调用
使用 promise.all()
Promise.all 方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。
Promise.all 方法接受一个数组作为参数,数组里的元素都是 Promise 对象的实例,如果不是,就会先调用下面讲到的 Promise.resolve 方法,将参数转为 Promise 实例,再进一步处理。
(Promise.all 方法的参数可以不是数组,但必须具有 Iterator 接口,且返回的每个成员都是Promise 实例。)
示例:var p =Promise.all([p1,p2,p3]);
p 的状态由 p1、p2、p3 决定,分为两种情况。
当该数组里的所有 Promise 实例都进入 Fulfilled 状态:Promise.all
返回的实例才会变成Fulfilled 状态。并将 Promise 实例数组的所有返回值组成一个数组,传递给 Promise.all 返回实例的回调函数。
当该数组里的某个 Promise 实例都进入 Rejected 状态:Promise.all 返回的实例会立即变成Rejected 状态。并将第一个 rejected 的实例返回值传递给 Promise.all 返回实例的回调函数。