2014-06-16 49 views
0

有人能向我解釋爲什麼這個工作:Socket.io與require.js異步io是不確定的

<script src="//cdn.socket.io/socket.io-1.0.4.js"></script> 
<script> 
     var socket = io('http://nodeapp.herokuapp.com'); 
     console.log(socket); 
</script> 

但這不起作用:

<script async src="//cdn.socket.io/socket.io-1.0.4.js"></script> 
<script> 
     var socket = io('http://nodeapp.herokuapp.com'); 
     console.log(socket); 
</script> 

錯誤是:

 Uncaught ReferenceError: io is not defined 

或者我如何在客戶端添加socket.io庫與require.js,並在這種情況下工作正常(沒有上述錯誤)。

回答

4
<script async ... 

您明確要求瀏覽器不要等到它獲取腳本。

因此,它不會等待腳本在進入下一個腳本之前被提取並執行。因而io尚未確定,當你去

var socket = io('http://nodeapp.herokuapp.com'); 

The MDN on script async

+0

如果我後來在控制檯嘗試連接,錯誤仍然存​​在。 – Vlatko

+1

真正的問題是爲什麼用require.js加載的socket.io(1.0.x)在全局上不可用?隨着版本0.9一切工作正常... – Vlatko