加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
50-实现Promise的resolve.html 1.25 KB
一键复制 编辑 原始数据 按行查看 历史
wangcai 提交于 2023-04-04 16:49 . xx‘
<script>
// 实现 resolve 静态方法有三个要点:
// 传参为一个 Promise, 则直接返回它。
// 传参为一个 thenable 对象,返回的 Promise 会跟随这个对象,
// 采用它的最终状态作为自己的状态。
// 其他情况,直接返回以该值为成功状态的promise对象。
// 实现Promise中resolve静态方法
Promise.resolve = (param) => {
if (param instanceof Promise) return param
return new Promise((resolve, reject) => {
if (param && param.then && typeof param.then === "function") {
// console.log("传递的是一个thenable");
param.then(resolve, reject)
} else {
resolve(param)
}
})
}
const p1 = new Promise((resolve, reject) => {
resolve("p1 resolve")
// reject("p1 reject error")
})
// Promise.resolve("码路").then(res => {
// Promise.resolve(p1).then(res => {
Promise.resolve({
then(resolve, reject) {
resolve("p1 resolve")
}
}).then(res => {
console.log("then结果:", res)
})
// 相当于
// new Promise((resolve) => {
// resolve("hello")
// })
</script>
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化