Как просто использовать Deferred-объекты без jquery (производительность при большом кол-ве объектов)?
1) А как это делать без jquery, на нативном es6, и так же, в две строчки?
Deffered в jQ - это недобитый Promise. А они поддерживаются теперь почти везде, а для остальных есть полифил.2) У меня рендерятся поля. Их может быть очень много. Сильно ли скажется на производительности, если каждый из этих полей будет иметь свойство-объект с deferred? Отложенное свойство мне нужно для отслеживания рендеринга полей на странице. Я использую рендер полей пачками по 30 через setTimeout.
На производительности вообще не скажется, только на потреблении памяти.3) Можно ли, отказаться от setTimeout(func,0) в сторону чего-то более быстрого? (в моем случае, рендер 1 поля занимает 1,9-2,4 мс, а время ожидания между циклами setTimeout(func,0) - 25-30ms, что очень критично. Поэтому и ренедрю пачками по 30 штук. -- получается (1,9...2,4)*30 ~ 60-70ms + 25-30ms делэй от таймера.
Вы setTimeout используете, чтобы каждая порция рендерилась на следующем тике, чтобы UI не повис? В таком случае, возможно, стоит вынести рендеринг в WebWorker.
$.when(d1,d2,d3).then( done, fail);
d1 = $.Deffered();
d1.resolve(mydata);Promise.all([d1,d2,d3]).then( done, fail);

// если нужен сразу зарезолвенный промис
Promise.resolve(mydata)

// если нужно создать и зарезолвить когда-то потом, то сложнее
var resolver;
new Promise((resolve, reject) => {
    resolver = resolve;
});
// ...
resolver(mydata);