栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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!');});

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/363593.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号