2016-03-05 52 views
0

运行以下时:语法错误:之后元素列表中缺少]使用的setInterval

setTimeout(this.nextScene.load(function() { 
    this.nextSceneLoaded = true; 
}.bind(this)), 0); 

应该做的异步加载下一个场景,让我们知道当它这样做,但我注意到“语法错误:失踪]在Firefox控制台中的元素列表之后。

对StackOverflow进行一些搜索有类似的问题,但它们似乎涉及不使用函数作为setTimeout的第一个参数的人。

为什么会发生这种情况,我该怎么办才能修复它/有没有其他方法?

(也没有jQuery的,等等。我想保持这一尽可能多的普通的JavaScript越好。)

+0

你可以发布演示来重现错误吗?这看起来不像错误描述的那样... – elclanrs

+0

从'this.nextSceneLoaded = true'行中删除';' –

+0

'this.nextScene.load'是否返回一个函数? – elclanrs

回答

0

好的,感谢David Bradshaw让我意识到我没有将一个函数传递给setTimeout(5am编码是一个坏主意)。我真正想要做的是:

setTimeout(function() { 
    this.nextScene.load(function() { 
     this.nextSceneLoaded = true; 
    }.bind(this)); 
}.bind(this), 0); 

但是,正如其他用户指出,这真的没有什么帮助,仍然阻止用户界面。如果有人在未来寻找类似的东西,希望这会很有用。

1

做setTimeout和传递0作为第二个值的唯一原因是要克服几个模糊浏览器竞争条件。

您在此处的代码使用回调函数调用this.nextScene,并将该调用的结果传递给setTimeout,它不会延迟执行,并且您不通过引用传递函数bind在此处没有为您执行任何操作除非this.nextScene传回一个函数。

我最好猜测你试图做的是什么。

setTimeout(this.nextScene.load.bind(this, function(){ 
    this.nextSceneLoaded = true; 
},0); 
相关问题