Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环中的事件侦听器_Javascript_Loops_Events_Asynchronous_Coffeescript - Fatal编程技术网

Javascript 循环中的事件侦听器

Javascript 循环中的事件侦听器,javascript,loops,events,asynchronous,coffeescript,Javascript,Loops,Events,Asynchronous,Coffeescript,我很难理解这段代码的摘录 _.forEach peerIds, (peerId) => console.log "connecting to peerId: #{ peerId }" connection = peer.connect peerId connection.on "error", (error) => alert error.type connection.on "open", => con

我很难理解这段代码的摘录

_.forEach peerIds, (peerId) =>

    console.log "connecting to peerId: #{ peerId }"

    connection = peer.connect peerId

    connection.on "error", (error) =>
        alert error.type

    connection.on "open", =>

        console.log "connection to peerId #{ connection.peer } is open: #{ connection.open }"

        @connections.push connection

        @listenForMessage connection
这是我正在进行的p2p聊天的一部分。基本上,它遍历对等ID列表,为每个ID创建一个连接,并在创建的每个连接上放置一个事件侦听器

您看到的变量
\
是。变量
peer

如果我们假设
peerIds
被设置为
[“y”,“z”]
,下面是非常有趣的控制台输出:

皮瑞兹:是的,是的

正在连接到peerId:y

连接到peerId:z

与peerId z的连接已打开:false

与peerId z的连接已打开:true

为什么对属于对等方
z
的连接调用两次事件
open
?我不可能从内部循环中更改
peerIds
,对吗

我需要以某种方式使此运行同步(不带a)或在异步时简单地更正

预期产出:

皮瑞兹:是的,是的

正在连接到peerId:y

连接到peerId:z

与peerId y的连接已打开:true

与peerId z的连接已打开:true


闭嘴!此外,CoffeeScript还为其提供了关键字
do

_.forEach peerIds, (peerId) =>

    connection = peer.connect peerId

    do (connection) =>

        connection.on "error", (error) ->
            alert error.type

        connection.on "open", =>

            @connections.push connection

            @listenForMessage connection