有没有一种方法可以在jQuery中创建一个延迟的对象包装器?

Is there a way to create a deferred object wrapper in jQuery

本文关键字:延迟 一个 创建 包装 对象 jQuery 方法 一种 有没有      更新时间:2023-09-26

我读了很多关于新jQuery的文章。延迟的对象。真正有用的一件事是能够将现有对象转换为延迟对象,然后您将获得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

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

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

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

(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"})