自用迷你版的Deferred

简介:

啥也不说贴代码,项目用

复制代码
/**
     * 迷你版的deferred
     */
    function Deferred(func) {
        if (this instanceof Deferred === false) {
            return new Deferred(func)
        }
        var tuple = [];
        var promise = {
            resolve: function() {
                var t = tuple.shift(),
                    n;
                t && (n = t.apply(null, arguments), n instanceof Deferred && (n.tuple = tuple));
            },
            then: function(n) {
                return tuple.push(n), this;
            }
        }
        if (func) {
            func.call(promise, promise.resolve);
        }
        return promise;
    };
复制代码

 

demo1

复制代码
var d = new Deferred();

    setTimeout(function() {
        d.resolve('aaaa')
    }, 500)

    d.then(function(bbb){
        console.log(bbb)
    })
复制代码

 

demo2

1
2
3
4
5
Deferred( function (resolve) {
     resolve( 'aaaa' )
}).then( function (bbb) {
     console.log(bbb)
})

  

本文转自艾伦 Aaron博客园博客,原文链接:http://www.cnblogs.com/aaronjs/p/3745607.html,如需转载请自行联系原作者


相关文章
|
存储 Web App开发 前端开发
Sentry For React 完整接入详解(2021 Sentry v21.8.x)前方高能预警!三万字,慎入!(二)
Sentry For React 完整接入详解(2021 Sentry v21.8.x)前方高能预警!三万字,慎入!(二)
697 0
|
5月前
|
前端开发 JavaScript
CPU都被干冒烟了,拥抱HarmonyOS第二天,自定义组件(下)
CPU都被干冒烟了,拥抱HarmonyOS第二天,自定义组件
|
5月前
|
前端开发 JavaScript 数据管理
CPU都被干冒烟了,拥抱HarmonyOS第二天,自定义组件(上)
CPU都被干冒烟了,拥抱HarmonyOS第二天,自定义组件
SwiftUI 面面观
前言 Swift 5.1 新语法 单表达式隐式返回值 根据结构体默认成员合成默认初始化器 字符串插入运算符新设计 属性包装器 不透明返回类型 Swift Style DSL / Function Builder 其他新特性 Swift 从 3.x Attribute Swift/SwiftUI API Design Guide 值类型和引用类型
1499 0
|
前端开发 JavaScript 数据库
冇事来学系--Vue2.0中Promise详讲(上)
回调地狱 多层回调函数的相互嵌套,就形成了回调地狱
292 0
|
前端开发
冇事来学系--Vue2.0中Promise详讲(下)
then-fs的基本使用 可以通过node下载then-fs。 npm install then-fs
155 0
|
JavaScript
冇事来学系--Vue2.0 组件开发详讲(下)
组件的自定义属性props props节点是和data、methods等同级的节点,值是一个数组
126 0
|
JavaScript 容器
冇事来学系--Vue2.0中VueComponent(组件)
组件的本质 组件的本质就是一个 构造函数 f VueComponent (options) { this._init(options); } ,是Vue.extend( )生成的 当我们使用组件时,写了组件的标签,Vue解析时就会创建该组件的实例对象,即Vue帮我们执行了这一句代码 new VueComponent(options) (options就是我们写的data、methods、computed等数据) 每次调用Vue.extend( )时,返回的都是一个全新的VueComponent
300 0
|
JavaScript 前端开发
冇事来学系--Vue2.0中讲讲生命周期吧
生命周期(Life Cycle) 是指一个组件从创建->运行->销毁的整个阶段,强调的是一个时间段。 生命周期函数:是由vue框架提供的内置函数,会伴随着组件的生命周期,自动按次序执行 。是vue在关键时刻帮我们调用的一些特殊名字的函数。 生命周期函数中的this指向的是vm或组件实例对象
174 0
好客租房62-组件的生命周期三个阶段-4卸载时
好客租房62-组件的生命周期三个阶段-4卸载时
108 0
好客租房62-组件的生命周期三个阶段-4卸载时