前端面试题(三)

104 阅读2分钟

「这是我参与2022首次更文挑战的第12天,活动详情查看:2022首次更文挑战」。

promise 对象

1.什么是promise?

promise是一个对象,是异步编程的一种解决方案。可以控制异步代码的执行顺序

2.promise可以解决什么问题?

(1)回调地狱(回调嵌套非常多层,代码难以维护,上一个异步结果的输出是下一个异步结果的输入)

(2)可以解决多个并发请求,获取结果。

3.promise 对象的三个状态分别是?

pending===>等待态

fulfilled===>成功态(相当于resolve) --异步操作执行成功后的回调函数

rejected===>失败态 --异步操作执行失败后的回调函数

是由pending到fulfilled或rejected状态的转变

4.promise的then方法和catch方法

then方法是promise执行resolved回调

catch方法是promise执行rejected回调,也可以是执行resolved回调时候异常报错,会进入catch里

5.promise的all方法和race方法

all:

(1)谁跑的最慢,执行谁。

(2)all接收的是以一个数组参数。

(3)全正确为正确,有一个错误就错

race:

(1)谁最快执行谁

(2)race接收的也是数组

(3)有一个是正确就正确

注意:

(1)promise可以解决异步问题,但是它本身不是异步的

(2)then(),catch()是在原型上的方法,all、reject、resolve是在自身上的方法。

中断promise

返回一个新的初始的promise,即可

return new Promise(()=>{})

5、async await 是什么?它有哪些作用?

async await 是es7里面的新语法、它的作用就是 async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成。它可以很好的替代promise 中的then

async函数返回一个 Promise 对象,可以使用then方法添加回调函数。当函数执行的时候,一旦遇到await就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。

async`函数返回一个 Promise 对象,await就是等待这个promise的返回结果后,再继续执行函数体内后面的语句。

(1)async就是异步,声明后面这个函数是异步代码。

(2)await 必须和async一起使用。async可以单独使用。

(3)async后面的函数返回的是一个promise对象。

(4)await操作符后面可以是任意值,如果值是promise对象,就会暂停async后面的函数的执行,等待await后面promise对象拿到返回结果,再执行后面的代码