0

我已经阅读了很多关于新的 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

有谁知道这种方法是否已经存在,或者如何创建一个?

4

1 回答 1

0

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

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

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

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

[未经测试,可能无法正常工作,E&OE 等]

编辑

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

$.when({property: "data"})
于 2011-04-13T09:13:18.183 回答