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.