[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Убрать setTimeout
Pandion
Добрый день

Имеется

get : function(){
setTimeout(
function(){
var select = $('#select');
select.styler();
}, 1
);
},


Вот как не пытался переписать без setTimeout - не работает
Guest
В IIFE заверни.
redreem
а так?
вообще странно, таймаут на 1 миллисекунду... понятно было бы еще если б на пару сотен.
get : function(){
$(document).ready(
function(){
var select = $('#select');
select.styler();
}
);
},
Invis1ble
Цитата (redreem @ 12.02.2016 - 20:10)
вообще странно, таймаут на 1 миллисекунду

недавно точно такой же хак приходилось делать, что-то там не успевало инициализироваться, а пропатчить возможности не было
насколько я помню, в реальности этот таймаут более 1 мсек выходит, у меня порядка 20 мсек

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

redreem
Invis1ble
подозреваю, что с сервака по онлоад идет куча инициализаций всякой всячины и одна "всячина" зависит от другой, но инитится первой. вот и затык. да, таймаут в 1 мс поможет, просто сначала отработает онлоад, а потом сразу таймаут. но с другой стороны если попробовать как я написал, - теоретически это должно встать последним в очередь.
Invis1ble
Цитата (redreem @ 12.02.2016 - 21:14)
с сервака по онлоад идет куча инициализаций всякой всячины и одна "всячина" зависит от другой

да, примерно как-то так и было
при этом никакого события не триггерилось сторонним плагином + всё завернуто в AMD-модули и не пропатчить

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Guest
Цитата (redreem @ 12.02.2016 - 20:10)
а так?
вообще странно, таймаут на 1 миллисекунду... понятно было бы еще если б на пару сотен.
get : function(){
  $(document).ready(
    function(){
    var select = $('#select');
    select.styler();
}
  );
  },

Тут есть одна проблема: раньше внутреннюю фукнкцию вызывал setTimeout, а теперь ее никто не вызывает.
Guest
А не, пардон. Глаза подвели smile.gif
sergeiss
Цитата (Pandion @ 12.02.2016 - 18:45)
Вот как не пытался переписать без setTimeout - не работает

Как именно пытался? У меня есть подозрение, что без таймаута ты пытаешься обратиться к объекту, который еще не создан. Что за айдишник такой? Это объект, который создается динамически? Или он изначально создается на странице? В зависимости от условий, варианты действий могут быть разные. Но независимо от условий, таймаут тут явно лишний.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Pandion
Цитата (redreem @ 12.02.2016 - 16:10)
а так?
вообще странно, таймаут на 1 миллисекунду... понятно было бы еще если б на пару сотен.
get : function(){
$(document).ready(
function(){
var select = $('#select');
select.styler();
}
);
},

Так тоже не работает

select создается динамически, да
sergeiss
Цитата (Pandion @ 13.02.2016 - 09:24)
select создается динамически, да

Тогда смотри, что ты делаешь.

Вот этот код (что внутри него) выполняется сразу же по окончании загрузки страницы и как только jQuery готов.
$(document).ready(


Если ты создаешь объект динамически, то он, скорее всего, появится позднее, чем выполнится код внутри $(document).ready, что и происходит, похоже, в твоем случае.
Тебе какие-то действия с объектом надо выполнять в той части кода, где ты его создаешь :) Проще логики просто быть не может. Создал объект - запустил какие-то связанные с ним действия. А если ты где-то в другой части когда действуешь, то да, тебе надо как-то угадать, когда объект появится.

Короче говоря. Где именно и каким кодом создается этот объект?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Guest
Pandion, это про твой styler http://dimox.name/jquery-form-styler/#nedostatki ?
Pandion
В другом файле создаётся. Мне там сложно разобраться, там бэкбон, рендерится как-то

да, стайлер через jquery-form
Pandion
Т.е. setTimeout не убрать?)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.