如果promise没有resolve会怎样

448 阅读1分钟

promise的概念。

一个 Promise 是一个代理,它代表一个在创建 promise 时不一定已知的值。它允许你将处理程序与异步操作的最终成功值或失败原因关联起来。这使得异步方法可以像同步方法一样返回值:异步方法不会立即返回最终值,而是返回一个 promise,以便在将来的某个时间点提供该值。

promise可能的三种状态:
一个 Promise 必然处于以下几种状态之一:

  • 待定(pending) :初始状态,既没有被兑现,也没有被拒绝。
  • 已兑现(fulfilled) :意味着操作成功完成。
  • 已拒绝(rejected) :意味着操作失败。

如果一个promise没有resolve或者reject,会发生什么呢?? let's try 一 try

function promiseWithOutResolve(){
    console.log('开始测试')
    const promise = new Promise((res,rej)=>{
        console.log('创建一个promise')
    })

    promise.then((data)=>{
        console.log('promise 的执行结果:',data)
    })
    setTimeout(()=>{
        console.log('promise调用之后的setTimeout执行')
    })
    console.log('测试结束')

}

promiseWithOutResolve()

最终执行结果

image.png

由此可见,一个promise中如果没有resolve或者reject,调用该promise的then或者catch方法并不会执行then中的逻辑。
该promise将永久保留在pending状态。

那这个promise会被回收吗??浏览器什么时候会进行垃圾回收?又是一个新的知识点。。