我们有几个销售团队。对于这些销售团队,我们有一个排行榜。每当其中一人成交时,扬声器就会通过浏览器播放声音,浏览器每两分钟刷新一次页面并检查差异。一旦发现差异,它就会播放团队的声音。
以前,这些声音会含糊不清,因为我这样调用函数:
setTimeout(sounds[team_id].play(), delayTime);
我发现我必须通过删除()使其成为函数参考点。在这种情况下,似乎没有办法向参考点发送实参。
在经历了浏览器的bug和意外的mutings之后,我对自己做事的方式感到厌倦了。我不认为这是最佳的。我需要一个好方法来播放声音文件从任何位置(不,我不是热链接),不需要坚持SetTimeout。我正在考虑与jQuery的delay()函数有关。
jQuery的延迟函数是基于setTimeout
的,任何其他库提供的延迟或基于时间的功能也是如此。
我不明白你为什么会遇到麻烦——闭包应该能够处理你描述的情况:
setTimeout(function () {
sounds[team_id].play()
}, delayTime);
假设team_id
是您想要播放的声音的团队的id,并且team_id
在您调用setTimeout
的范围内可用。在没有看到上下文中的完整代码的情况下,很难确定任何潜在的问题。