2015-02-09 25 views
0

我将它创建为一个简单的等待脚本,但它的最大功能是冻结整个脚本时间秒。如何在JavaScript中创建一个等待函数,使您能够像音频一样在后台运行某些东西?

function wait(time) 
{ 
var x = 0; 
var y = time * 500000000; 
while (x<y) 
{ 
x++ 
} 
} 

我需要的是一个能延缓脚本,因为我的脚本循环,并有警报的废话负荷使声音不玩,直到脚本在我可以播放声音的编码。

这是我用来播放声音的脚本:

<div id="dummy"></div> 

<script type="text/javascript"> 
function playSound(sound) 
{ 
if (sound==1) 
{ 
document.getElementById("dummy").innerHTML = '<embed type="audio/mp3" src="http://www.myinstants.com/media/sounds/sound-8.mp3" autoplay="true" hidden="true" width="0" height="0" loop="false">'; 
} 
} 
</script> 

是的,我叫playSound(1)在另一个脚本。

回答

1

您无法在Javascript中完全冻结UI,从而无法创建阻止(即强制调用方等待它完成)的函数。

查看setTimeout,回调函数和可能的Promise作为异步执行这些操作的方法。

+0

有一个问题,虽然,该功能被称为while语句,所以,我可以做的唯一的事情是什么。如果我使用setTimeout,它只会延迟参数(例如:setTimeout(function(){playSound(1);},2000)只会延迟playSound(1)),while语句将会继续,没有什么可以延缓它,所以声音会继续。 – 2015-02-09 04:45:47

0

如果我得到你的权利,我相信你想使用的setTimeout方法。 你可以阅读更多关于它here,你会发现一些例子。

下面是一些短

<script> 
    function myFunction() { 
     setTimeout(playSound, 1000, sound); 
    } 
and call it wherever you need 
    </script> 
+0

有没有办法让整个线程也等待,而不是在函数中发送它的其余部分? – 2017-05-14 18:46:45

+0

nvm有异步功能,你可以等待承诺的解决方案 – 2017-08-01 23:05:29

相关问题