我一直在阅读很多关于新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
是否有人知道此方法是否已存在,或者如何创建该方法?
答案 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"})