当前位置: 首页 > 面试题库 >

promise是什么,其底层如何实现?

利思源
2023-03-14
本文向大家介绍promise是什么,其底层如何实现?相关面试题,主要包含被问及promise是什么,其底层如何实现?时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

Promise是一个对象,保存着未来将要结束的事件,她有两个特征:

1、对象的状态不受外部影响,Promise对象代表一个异步操作,有三种状态,pending进行中,fulfilled已成功,rejected已失败,只有异步操作的结果,才可以决定当前是哪一种状态,任何其他操作都无法改变这个状态,这也就是promise名字的由来

2、一旦状态改变,就不会再变,promise对象状态改变只有两种可能,从pending改到fulfilled或者从pending改到rejected,只要这两种情况发生,状态就凝固了,不会再改变,这个时候就称为定型resolved,

Promise的基本用法,

let promise1 = new Promise(function(resolve,reject){
        setTimeout(function(){
        resolve('ok')
        },1000)
    })
    promise1.then(function success(val){
   	 console.log(val)
})

最简单代码实现promise

javascript" lang="javascript">class PromiseM {
    constructor (process) {
    this.status = 'pending'
    this.msg = ''
    process(this.resolve.bind(this), this.reject.bind(this))
    return this
    }
    resolve (val) {
    this.status = 'fulfilled'
    this.msg = val
    }
    reject (err) {
    this.status = 'rejected'
    this.msg = err
    }
    then (fufilled, reject) {
    if(this.status === 'fulfilled') {
    fufilled(this.msg)
    }
    if(this.status === 'rejected') {
    reject(this.msg)
    }
    }
}

//测试代码

var mm=new PromiseM(function(resolve,reject){
    resolve('123');
    });
    mm.then(function(success){
  	  console.log(success);
    },function(){
   	 console.log('fail!');
});

 

 类似资料:
  • 主要内容:一、synchronized的使用方式,二、synchronized锁的原理,三、synchronized锁的优化,四、Lock锁与synchronized一、synchronized的使用方式 在语法上,要使用synchronized关键字,需要把任意一个非null对象作为"锁"对象,也就是需要一个对象监视器(Object Monitor)。总的来说有三种用法: 1.1 作用在实例方法 修饰实例方法,相当于对当前实例对象this加锁,this作为对象监视器。 1.2 作用在静态方法

  • 主要内容:一、synchronized的使用方式,二、synchronized锁的原理,三、synchronized锁的优化,四、Lock锁与synchronized一、synchronized的使用方式 在语法上,要使用synchronized关键字,需要把任意一个非null对象作为"锁"对象,也就是需要一个对象监视器(Object Monitor)。总的来说有三种用法: 1.1 作用在实例方法 修饰实例方法,相当于对当前实例对象this加锁,this作为对象监视器。 1.2 作用在静态方法

  • 本文向大家介绍什么是Promise?相关面试题,主要包含被问及什么是Promise?时的应答技巧和注意事项,需要的朋友参考一下 Promise可以帮助我们更好地处理异步操作。下面的实例中,100ms后会打印result字符串。catch用于错误处理。多个Promise可以链接起来。

  • 问题内容: 我试图在一个明确的列表中回答两个问题: Redis的底层数据结构是什么? 每种类型的主要优点/缺点/用例是什么? 因此,我读过Redis列表实际上是用链接列表实现的。但是对于其他类型,我无法提取任何信息。同样,如果有人偶然发现了这个问题,而又对修改或访问不同数据结构的优缺点没有一个高层次的总结,那么他们将有完整的清单,列出 何时可以最佳地使用特定类型 进行引用。 具体来说,我希望概述所

  • Docker 底层的核心技术包括 Linux 上的命名空间(Namespaces)、控制组(Control groups)、Union 文件系统(Union file systems)和容器格式(Container format)。 我们知道,传统的虚拟机通过在宿主主机中运行 hypervisor 来模拟一整套完整的硬件环境提供给虚拟机的操作系统。虚拟机系统看到的环境是可限制的,也是彼此隔离的。这

  • 1、基本架构 Docker 采用了 C/S架构,包括客户端和服务端。 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者 RESTful API 来进行通信。 Docker daemon 一般在宿主主机后台运行,等待接收来自客户端的消息。 Docker 客户端则为用户提供一系列可执行