有没有办法在jQuery中创建延迟对象包装器

时间:2011-04-13 08:51:55

标签: javascript jquery wrapper jquery-deferred

我一直在阅读很多关于新jQuery.Deferred对象的内容。有一点非常有用的是能够将现有对象转换为延迟对象,然后您可以100%灵活地获取数据的来源。

我在想

$.makeDeferred({property: "data"}) // returns an object with .promise() method, in resolved state, and that passes the original object as data/context to any callback function

是否有人知道此方法是否已存在,或者如何创建该方法?

1 个答案:

答案 0 :(得分:0)

你不需要包装你的对象来获得这种效果,因为大多数传递promises的方法都会将普通对象视为已经解析的promise。

那就是说,如果你真的想要这个,试试这个:

(function($) {
    $.makeDeferred = function() {
        var d = $.Deferred();
        d.resolve(arguments);
        return d.promise();
    };
))(jQuery);

这至少可以让你处理你想要调用承诺的方法的情况,例如: my_promise.done(),而传递承诺,即$.when(my_promise)

[未经测试,可能无效,E& OE等]

修改

实际上,我要做的就是将您的普通旧数据包装在$.when中:

$.when({property: "data"})