关于javascript:前端基础知识Promise

Promise总共有三种状态,别离是pending,resolved,rejected。

  1. 状态变动是pending->resolved或者pending->rejected,且状态变动不可逆。
  2. pending不会触发then或者catch回调函数,resolved会触发then回调函数,rejected会触发catch回调函数。
  3. then失常返回resolved,外面有报错返回rejected;catch失常返回resolved,外面有报错返回rejected。

面试题

// 第一题
Promise.resolve().then(() => {
    console.log(1) //返回 resolved 状态的 promise,不执行catch
}).catch(() => {
    console.log(2)
}).then(() => {
    console.log(3)//返回 resolved 状态的 promise
})

后果为1,3

// 第二题
Promise.resolve().then(() => { 
    console.log(1)
    throw new Error('erro1') //本来应返回resolved状态的promise,但因为抛出异样,所以返回 rejected 状态的 promise,执行catch
}).catch(() => { 
    console.log(2) // 返回 resolved 状态的 promise,执行then
}).then(() => {
    console.log(3) // 返回 resolved 状态的 promise
})

后果为1,2,3

// 第三题
Promise.resolve().then(() => { 
    console.log(1)
    throw new Error('erro1') // 本来应返回resolved状态的promise,但因为抛出异样,返回 rejected 状态的 promise
}).catch(() => { 
    console.log(2) // 返回 resolved 状态的 promise,不执行catch
}).catch(() => {
    console.log(3)
})

后果为1,2

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理