自定义简易版promise

javascript 代码

升级版(TODO:实现when方法)
promise.js

promise-test.js

别人的代码 javascript异步编程之:世界上最短的Promise库

类库源码
var Promise = function () {
this.thens = [];
};
Promise.prototype = {
resolve: function () {
var t = this.thens.shift(), n;
t && (n = t.apply(null, arguments), n instanceof Promise && (n.thens = this.thens));
},
then: function (n) {
return this.thens.push(n), this;
}
}
使用方式
function f1() {
var promise = new Promise();
setTimeout(function () {

            alert(1);
            promise.resolve();
        }, 1500)

        return promise;
    }

    function f2() {
        var promise = new Promise();
        setTimeout(function () {

            alert(2);
            promise.resolve();
        }, 1500)

        return promise;
    }

    function f3() {
        var promise = new Promise();
        setTimeout(function () {

            alert(3);
            promise.resolve();
        }, 1500)

        return promise;

    }

    function f4() {
            alert(4);
    }

    f1().then(f2).then(f3).then(f4)

类库思路
主要的思路就是将主Promise下的任务列表(thens)挂靠到子Promise下。当然该库可以封装至ajax、domready等耗时的场景当中,使其可以”thenable",如:

      $$.ajax("assets/xxx.php", {
                 method: "GET",
                 data: "q=1&rand=" + Math.random()
             }).then(function (msg) {
                 alert(msg.responseText)
             });
» 本文来自:前端开发者 » 《自定义简易版promise》
» 本文链接地址:https://www.rokub.com/9274.html
» 您也可以订阅本站:https://www.rokub.com
赞(0)
64K

评论 抢沙发

评论前必须登录!