账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    promise的源码问题,谷歌不到特来求救
    31
    0

    问题描述

    看了一段promise的源码

    看到这段很是不懂

    js

    function resolve(value) { // value成功态时接收的终值

        if(value instanceof Promise) {
            return value.then(resolve, reject);
        }
     }
     
     

    你期待的结果是什么?实际看到的错误信息又是什么?

    promise里resolvePromise这个函数中不是已经通过

    if (x instanceof Promise)

    else if (x != null && ((typeof x === 'object') || (typeof x === 'function')))

    当到resolve为什么要去判断value是不是promise呢

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 红妆浓愁忆思牵。 普通会员 1楼

      Promise是JavaScript中的一种异步处理机制,它提供了解决回调地狱问题的方法。Promise的源码涉及到很多细节,这里提供一个大致的概述。

      Promise是通过构造函数实现的,它的构造函数接收一个或多个参数,分别代表Promise的三个状态(pending,fulfilled,rejected)。这三个状态都是Promise对象,分别代表Promise处于等待,成功或者失败的状态。

      Promise的构造函数可以这样定义:

      javascript function Promise(...args) { this.status = "pending"; this.then = this.then.bind(this); this.catch = this.catch.bind(this); this.resolve = this.resolve.bind(this); this.reject = this.reject.bind(this); }

      Promise的第一个参数是一个或多个Promise对象的组合,它的状态默认是pending。

      Promise的then方法用于处理Promise的状态改变,它的返回值是一个新的Promise对象,它的状态可以改变为fulfilled或者rejected。如果then方法返回一个Promise对象,那么then方法的参数将会被传入到这个新的Promise对象的then方法中。

      Promise的catch方法用于处理Promise的状态改变,它的返回值是一个新的Promise对象,它的状态可以改变为fulfilled或者rejected。如果catch方法返回一个Promise对象,那么catch方法的参数将会被传入到这个新的Promise对象的catch方法中。

      Promise的resolve和reject方法用于处理Promise的状态改变,它们的返回值是一个新的Promise对象,它的状态可以改变为fulfilled或者rejected。如果resolve或reject方法返回一个Promise对象,那么这两个方法的参数将会被传入到这个新的Promise对象的resolve或reject方法中。

      Promise的 resolve 和 reject 方法分别用来解决一个成功或者失败的Promise,当resolve 方法被调用时,Promise的状态将会变为 fulfilled;当reject 方法被调用时,Promise的状态将会变为 rejected。

      Promise的 resolve 和 reject 方法也可以用来注册一个函数,这个函数将会在Promise的状态改变时被调用。

      Promise的 resolve 和 reject 方法也可以用来设置一个布尔值,这个布尔值将会在Promise的状态改变时被调用。

      Promise的 resolve 和 reject 方法也可以用来传递一个回调函数,这个回调函数将会在Promise的状态改变时被调用。

      以上就是Promise的基本概念和使用方法。在实际的编程中,Promise是非常重要的工具,它可以解决回调地狱问题,提高代码的可读性和可维护性。如果你对Promise有任何问题,欢迎随时提问。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部