1. promise
简介
- Promise对象可以解决回调地狱的问题
- Promise 是异步编程的一种解决方案,比传统的解决方案(回调函数和事件)更合理和更强大
Promise可以理解为一个容器,里面可以编写异步程序的代码- 从语法上说,Promise 是一个对象,使用的使用需要
new
三种状态
- 最初状态:pending,等待中,此时promise的结果为 undefined;
- 当 resolve(value) 调用时,达到最终状态之一:fulfilled,(成功的)完成,此时可以获取结果value
- 当 reject(error) 调用时,达到最终状态之一:rejected,失败,此时可以获取错误信息 error
当达到最终的 fulfilled 或 rejected 时,promise的状态就不会再改变了。
特点
当调用 resolve的时候,Promise 将到达最终的状态。 达到最终状态之后,Promise的状态就不会再改变了。
多次调用 resolve 函数,只有第一次有效,其他的调用都无效。
同步异步
- new Promise是同步执行的
- 获取结果时(调用 resolve 触发 then方法时)是异步的
then方法的链式调用
- 前一个then里面返回的字符串,会被下一个then方法接收到。但是没有意义;
- 前一个then里面返回的Promise对象,并且调用resolve的时候传递了数据,数据会被下一个then接收到
- 前一个then里面如果没有调用resolve,则后续的then不会接收到任何值
2. async 和 await 修饰符
-
async 用于修饰一个 function
- async 修饰的函数,总是返回一个 Promise 对象
- 函数内的返回值,将自动包装在 resolved 的 promise 中
-
await 只能出现在 async 函数内
- await 让 JS 引擎等待直到promise完成并返回结果
- 语法:let value = await promise对象; // 要先等待promise对象执行完毕,才能得到结果
- 由于await需要等待promise执行完毕,所以await会暂停函数的执行,但不会影响其他同步任务
-
对于错误处理,可以选择在async函数后面使用
.catch()或 在promise对象后使用.catch()
3. js有哪些数据类型
- undefined、null、boolean、number、string、object、symbol、bigInt
-
bigInt有在考察平时有没有去了解新闻,知道下就行了
-
undefined 和null的区别
- nudefined是声明之后的默认值,但null不是
- undefined一般是给基本类型做未赋值的,null给对象(数组、函数)做未赋值的
- undefined不是关键字,而null是关键字
4. 为什么 0.1 + 0.2 !== 0.3
0.1+0.2 = 0.3000000000004
浮点数精度问题。0.1存下来的并不是0.1,0.2也不是0.2。所以0.1+0.2也就是约等于0.3
追问:怎么判断2个数字相等?a是一个小数,b是一个小数
|a-b| < 0.00001 就相等
5. 箭头函数和普通函数的区别
- 箭头函数没有自己的
this对象,this指向外部的this - 不可以当作构造函数
- 没有arguments对象,可以用 rest 参数代替
- 写起来方便
- 如果函数体只有一句话,可以省略大括号