<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS: как дождаться завершения функции?]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=6822&amp;type=atom" />
	<updated>2012-02-15T09:16:56Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=6822</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS: как дождаться завершения функции?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=56860#p56860" />
			<content type="html"><![CDATA[<p>Как альтернатива, для HTA можно использовать такой вариант:</p><div class="codebox"><pre><code>
&lt;html&gt;
    &lt;head&gt;
        &lt;meta charset=&quot;windows-1251&quot;&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;script language=&quot;vbscript&quot;&gt;
        Sub window_onload()
            WriteLn &quot;Ждём секунду.&quot;
            Sleep 1000

            WriteLn &quot;Ждём 5 секунд.&quot;
            Sleep 5000
            
            WriteLn &quot;Ждём 3 секунды.&quot;
            Sleep 3000
            
            WriteLn &quot;Конец&quot;
        End Sub

        Sub WriteLn(Text)
            document.body.innerHtml = document.body.innerHtml &amp; Text &amp; &quot;&lt;br&gt;&quot;
        End Sub

        Sub Sleep(ByVal mSec)
            CreateObject(&quot;WScript.Shell&quot;).Run &quot;ping 0.0.0.0 -w &quot; &amp; Clng(mSec), 0, True
        End Sub
        &lt;/script&gt;
    &lt;/body&gt;
&lt;/html&gt;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2012-02-15T09:16:56Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=56860#p56860</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: как дождаться завершения функции?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=56847#p56847" />
			<content type="html"><![CDATA[<p>Т.к функция setTimeout псевдоасинхронная, то приходится работать с колбэками.<br /></p><div class="codebox"><pre><code>
&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;Title&lt;/title&gt;
		&lt;meta http-equiv=Content-Type content=&quot;text/html; charset=windows-1251&quot;/&gt;
		&lt;script language=&quot;VBScript&quot;&gt;
		
		Dim i
		
		Sub window_onload()
			SelectWaiter
		End Sub
		
		Sub SelectWaiter()
			Select Case i
			Case 0
				WriteLog &quot;Ставим таймаут секунду.&quot;
				Wait 1000, &quot;Wait_complete()&quot;
			Case 1
				WriteLog &quot;Ставим таймаут 5 секунд.&quot;
				Wait 5000, &quot;Wait_complete()&quot;
			Case 2
				WriteLog &quot;Ставим таймаут 3 секунды.&quot;
				Wait 3000, &quot;Wait_complete()&quot;
			Case 3
				WriteLog &quot;Конец !&quot;
			End Select
		End Sub
		
		Sub Wait(Timeout,callback)
			setTimeout callback, timeout
		End Sub
		
		Sub Wait_complete()
			i = i + 1
			SelectWaiter()
		End Sub
		
		Sub WriteLog(Text)
			logDiv.innerHtml = logDiv.innerHtml &amp; Text &amp; &quot;&lt;br&gt;&quot;
		End Sub
		&lt;/script&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;div id=&quot;logDiv&quot;&gt;&lt;/div&gt;
	&lt;/body&gt;
&lt;/html&gt;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2012-02-15T06:42:59Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=56847#p56847</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: как дождаться завершения функции?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=56842#p56842" />
			<content type="html"><![CDATA[<p>Пример (закинул в HTA):<br /></p><div class="codebox"><pre><code>&lt;html&gt;
  &lt;head&gt;
    &lt;TITLE&gt;Title&lt;/TITLE&gt;
    &lt;META http-equiv=Content-Type content=&quot;text/html; charset=windows-1251&quot;/&gt;
    &lt;script language=&quot;VBScript&quot;&gt;
      Function main()
        sleep 1,&quot;1&quot;
        sleep 5,&quot;5&quot;
        sleep 3,&quot;3&quot;
      End function
      Function sleep(sTime,text)
        If (sTime &gt; 0) Then
          sTime = sTime - 1
          setTimeOut &quot;sleep &quot;&amp;sTime&amp;&quot;,&quot;&amp;text,1000
        Else
          document.getElementById(&quot;log&quot;).innerHtml = document.getElementById(&quot;log&quot;).innerHtml &amp; &quot;[&quot; &amp; cstr(time()) &amp; &quot;] &quot; &amp; text &amp; &quot;&lt;br&gt;&quot;
        End If
      End Function
    &lt;/script&gt;
  &lt;/head&gt;
  &lt;body onLoad=&quot;VBScript: main()&quot;&gt;
    &lt;div id=&quot;log&quot;&gt;&lt;/div&gt;
  &lt;/body&gt;
&lt;/html&gt;</code></pre></div><p>Хотелось бы чтоб вевел в порядке 1,5,3, как и задано, а выводит 1,3,5 (значит стартуют одновременно)</p>]]></content>
			<author>
				<name><![CDATA[pad0nak]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27167</uri>
			</author>
			<updated>2012-02-15T06:09:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=56842#p56842</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: как дождаться завершения функции?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=56838#p56838" />
			<content type="html"><![CDATA[<p>Не воспроизводится. Приведите конкретный пример, воспроизводящий проблему.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2012-02-15T04:55:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=56838#p56838</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBS: как дождаться завершения функции?]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=56835#p56835" />
			<content type="html"><![CDATA[<p>Доброго времени суток, уважаемые!<br />Вопрос состоит в следующем: необходимо поочерёдно выполнить несколько функций так, чтобы сначала выполнилась 1-я и только затем 2-я, функций может быть много.<br />На данный момент столкнулся с такой проблемой, что запускаются сразу все функции, не дожидаясь завершения предыдущей.<br />Если кто решал подобную задачу, прошу отписаться.</p><p>Пример кода для наглядности:<br /></p><div class="codebox"><pre><code>Function Func1()
...
End Function

Function Func2()
...
End Function

Function Func3()
...
End Function

Do
  Func1()
  Func2()
  Func3()
Loop</code></pre></div>]]></content>
			<author>
				<name><![CDATA[pad0nak]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27167</uri>
			</author>
			<updated>2012-02-15T04:38:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=56835#p56835</id>
		</entry>
</feed>
