Promise.resolve()的参数分4种情况

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Promise.resolve()的参数分4种情况相关的知识,希望对你有一定的参考价值。

参考技术A (1)参数是Promise实例 ,那么Promise.resolve将不做任何修改,原封不动的返回这个实例,不做任何处理

(2) 参数是thenable对象

thenable对象指的是具有then方法的对象,promise.resolve会将thenable对象转换成promise对象并立即执行thenable对象的then方法,thenable的then方法执行完,对象p1的状态变为resolve,从而执行最后的then方法指定的回调函数,输出42

(3)参数不是具有then方法的对象,或者根本不是对象

 如果参数是一个原始值,或者是一个不具有then方法的对象,则Promise.resolve方法返回一个新的 Promise 对象,状态为resolved

由于字符串Hello不属于异步操作(判断方法是字符串对象不具有 then 方法),返回 Promise 实例的状态从一生成就是resolved,所以回调函数会执行。Promise.resolve方法的参数,会同时传给回调函数

(4) 不带参数

Promise.resolve方法允许调用时不带参数,直接返回一个resolved状态的 Promise 对象。

.then()函数里不返回值或者返回的不是promise,那么 then 返回的 Promise 将会成为接受状态(resolve)

ps:特殊案例

resolve()本质作用

resolve()是用来表示promise的状态为fullfilled,相当于只是定义了一个有状态的Promise,但是并没有调用它;
promise调用then的前提是promise的状态为fullfilled;
只有promise调用then的时候,then里面的函数才会被推入微任务中;

 原文链接:https://blog.csdn.net/my_new_way/article/details/104838192

以上是关于Promise.resolve()的参数分4种情况的主要内容,如果未能解决你的问题,请参考以下文章

《Promise学习笔记》- 2Promise相关常用方法总结

4--面试总结-promise

Promise.resolve 与新的 Promise(resolve)

如何在打字稿中正确编写有条件的 promise.resolve?

promise理解

Promise原理及实现