资讯专栏INFORMATION COLUMN

20170626-Promise的实现

姘搁『 / 556人阅读

Promise的实现
class Promise111{
    constructor(){
        this.callbacks = []
        this.oncatch = null
    }
    then(onSuccess, onFail){
        this.callbacks.push({
            resolve: onSuccess,
            reject: onFail
        })
        return this
    }
    resolve(result){
        this.complete("resolve", result)
    }
    reject(result){
        this.complete("reject", result)
    }
    complete(type, result){
        if(type === "reject" && this.oncatch){
            this.callbacks = []
            this.oncatch(result)
        } else {
            let callbackObj = this.callbacks.shift()
            callbackObj[type](result)
        }
    }
    catch(onFail){
        this.oncatch = onFail
        return this
    }
}

测试

var p = new Promise111()

function fn(){
    setTimeout(function(){
        p.resolve("data1")
    }, 1000)
    return p
}

function fn1(result){
    console.log("fn1", result)
    setTimeout(function(){
        p.resolve("data2")
    }, 2000)
}

function fn2(result){
    console.log("fn2", result)
}

fn().then(fn1).then(fn2)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/83687.html

相关文章

  • Dubbo SPI机制和IOC

    摘要:要构建自适应实例,先要有自适应的实现类,实现类有两种方式一种通过配置文件,一种是通过是字节码的方式动态生成。 SPI机制 SPI,即(service provider interface)机制,有很多组件的实现,如日志、数据库访问等都是采用这样的方式,一般通用组件为了提升可扩展性,基于接口编程,将操作接口形成标准规范,但是可以开放多种扩展实现,这种做法也符合开闭设计原则,使组件具有可插...

    Scorpion 评论0 收藏0
  • 练习项目备选清单

    摘要:练习项目备选清单文件下载器功能概要设计实现新建下载功能以为基础给出下载链接可以启动下载任务实现局域网内下载传输文件以单线程下载方式实现附加功能支持断点续传实现多线程下载实现下载参考技术套接字编程多线程编程音视频播放器功能概要设计实现播放常见 练习项目备选清单 Utilities 1. 文件下载器 功能概要设计: 实现新建下载功能(以ftp为基础) 给出下载链接可以启动下载任务 实现局...

    guyan0319 评论0 收藏0
  • 练习项目备选清单

    摘要:练习项目备选清单文件下载器功能概要设计实现新建下载功能以为基础给出下载链接可以启动下载任务实现局域网内下载传输文件以单线程下载方式实现附加功能支持断点续传实现多线程下载实现下载参考技术套接字编程多线程编程音视频播放器功能概要设计实现播放常见 练习项目备选清单 Utilities 1. 文件下载器 功能概要设计: 实现新建下载功能(以ftp为基础) 给出下载链接可以启动下载任务 实现局...

    peixn 评论0 收藏0
  • 前端路由原理解析和实现

    摘要:如何实现前端路由要实现前端路由,需要解决两个核心如何改变却不引起页面刷新如何检测变化了下面分别使用和两种实现方式回答上面的两个核心问题。 原文链接:github.com/whinc/blog/… 在单页应用如此流行的今天,曾经令人惊叹的前端路由已经成为各大框架的基础标配,每个框架都提供了强大的路由功能,导致路由实现变的复杂。想要搞懂路由内部实现还是有些困难的,但是如果只想了解路由实现基本...

    lavor 评论0 收藏0

发表评论

0条评论

姘搁『

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<