Вам не нужно оборачивать объект, чтобы получить этот эффект, поскольку большинство методов, которые передаются обещаниям в качестве параметров, будут обрабатывать простой объект как уже разрешенное обещание.
Тем не менее, если вы действительно хотите это, попробуйте это:
(function($) {
$.makeDeferred = function() {
var d = $.Deferred();
d.resolve(arguments);
return d.promise();
};
))(jQuery);
Это, по крайней мере, позволит вам также обработать случай, когда вы хотите вызвать метод из обещания, например, my_promise.done()
, в отличие от прохождения обещания, т.е. $.when(my_promise)
.
[не проверено, может не работать, E & OE и т. Д.]
EDIT
На самом деле, я думаю, все, что вам нужно сделать, - это обернуть ваши старые данные в $.when
:
$.when({property: "data"})