Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.06.2014, 12:17
Интересующийся
Отправить личное сообщение для diprom Посмотреть профиль Найти все сообщения от diprom
 
Регистрация: 21.05.2011
Сообщений: 24

Отсрочить функцию
Здравствуйте.
Есть продолжительная функция function ExpandTree(treex)
{
....

}
Хочу обернуть ее в параметр другой функции, чтобы она выполнилась с отсрочкой, а не выполнялась сразу в параметре.
WorkFunc( ExpandTree(treex),"Идет выполнение операции ...");

function WorkFunc(func,text)
{
	VisibleMessageDialog(text); 
	var ktimeout = setTimeout(function Work()
	{			
		func;
		HideMessageDialog();			
		clearTimeout(ktimeout);					
	}, 500);
}


Но ExpandTree(treex) начинает выполнять сразу и окошка отображения не видно, а хочется чтобы выполнялась внутри подфункции Work, а не раньше.

Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 27.06.2014, 23:16
Кандидат Javascript-наук
Отправить личное сообщение для Brutus Посмотреть профиль Найти все сообщения от Brutus
 
Регистрация: 24.11.2013
Сообщений: 127

<script>
  function WorkFunc(func)
  {
    //VisibleMessageDialog(text);
    setTimeout(function ()
               {			
                 func();
                 //HideMessageDialog();					
               }, 2000);
  }
  function ExpandTree(treex)
  {
    alert(0)
  }
  WorkFunc(ExpandTree)
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 28.06.2014, 00:59
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Типа этого не пойдет?
p=document.createElement("p")
p.style.display="none"
document.body.appendChild(p)
showMsg=function(text){
   p.innerHTML=text;
   p.style.display="block";
};
hideMsg=function(){p.style.display="none"}

long=function(text){
   var i=100000000
   while(i){
      i--
   }
   document.body.appendChild(document.createTextNode(text))
}

wrapper=function(fu, arg, text){
    showMsg(text)
    setTimeout(function(){
       fu(arg)
       hideMsg()
    }, 1000)
}


wrapper(long, "bla-bla-bla", "I'm first!")

Последний раз редактировалось foo, 28.06.2014 в 01:52.
Ответить с цитированием
  #4 (permalink)  
Старый 28.06.2014, 01:27
Кандидат Javascript-наук
Отправить личное сообщение для Brutus Посмотреть профиль Найти все сообщения от Brutus
 
Регистрация: 24.11.2013
Сообщений: 127

foo,
Пойдёт

p.s

wrapper=function(fu, arg, text){
    showMsg(text)
    var id=setTimeout(function(){
       fu(arg)
       hideMsg()
       clearTimeout(id)//БЕСПОЛЕЗНАЯ СТРОЧКА!!! Имеет смысл вне конструкции
    }, 1000)
}

===
wrapper=function(fu, arg, text){
    showMsg(text)
    setTimeout(function(){
       fu(arg)
       hideMsg()
    }, 1000)
}
Ответить с цитированием
  #5 (permalink)  
Старый 28.06.2014, 01:41
foo foo вне форума
Профессор
Отправить личное сообщение для foo Посмотреть профиль Найти все сообщения от foo
 
Регистрация: 17.05.2014
Сообщений: 197

Сообщение от Brutus
БЕСПОЛЕЗНАЯ СТРОЧКА!!! Имеет смысл вне конструкции
А, ну да, я просто на код ТС'a посмотрел, машинально написал. Спасибо
Ответить с цитированием
  #6 (permalink)  
Старый 28.06.2014, 10:35
Интересующийся
Отправить личное сообщение для diprom Посмотреть профиль Найти все сообщения от diprom
 
Регистрация: 21.05.2011
Сообщений: 24

Спасибо, то что надо.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передать параметры в функцию jQuery AJAX Lion_astana Общие вопросы Javascript 7 21.02.2014 17:25
Расширение для Safari. Как вызвать функцию из popover в global page? housewm Opera, Safari и др. 0 21.12.2013 06:07
передать анонимную функцию, вызывающую другую функцию с нужными параметрами Ваяс Общие вопросы Javascript 5 21.02.2013 20:12
checkbox включен запускаем одну функцию выключен другую Sadist_dead Элементы интерфейса 11 27.09.2011 10:46
проблема с передачей параметров в функцию bartonom Элементы интерфейса 4 19.09.2011 12:41