自用迷你版的Deferred

本文演示了如何使用自定义的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

Deferred(function(resolve) {
    resolve('aaaa')
}).then(function(bbb) {
    console.log(bbb)
})

  

转载于:https://www.cnblogs.com/aaronjs/p/3745607.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值