前端基础知识---Promise

Posted wisdomfree

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端基础知识---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

以上是关于前端基础知识---Promise的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段12——JavaScript的Promise对象

前端片段整理

前端基础知识---Promise

[vscode]--HTML代码片段(基础版,reactvuejquery)

第166天学习打卡(项目 谷粒商城8 前端基础ES6 promise 模块化 Vue)

前端基础 | JS异步执行机制——事件循环(Event Loop)