2016年4月3日 星期日

利用jQuery Promise模擬Native Promise

我們在寫es6時,會用到一些es6才有的函式或物件 但如果可以使用jQuery的一些內建函式來模擬的話 我們就不需要import 'babel-polyfill' 這樣產出來的javascript檔案就會少個90k左右

以下為程式碼

'use strict';

import $ from 'jquery';

if (!window.Promise) {
    class Promise {
        constructor(callback) {
            this.deferred = $.Deferred();
            callback((o) => {
                this.deferred.resolve(o);
            }, (o) => {
                this.deferred.reject(o);
            });
            this.promise = this.deferred.promise();
        }

        then(resolve, reject) {
            this.promise.done(resolve);
            this.promise.fail(reject);
            return this;
        }

        catch(reject) {
            this.promise.fail(reject);
            return this;
        }
    }

    window.Promise = Promise;
}

沒有留言:

張貼留言