我正在尝试节点4.1.2中的新Set
对象,我发现values
,keys
和entries
方法总是返回空物。例如:
var x = new Set
x.add(1)
x.add(2)
x.values() // returns {}
这是预期的行为吗?我无法想象它是什么。
答案 0 :(得分:1)
ES6增加了一些新的技巧,包括迭代协议。您可能需要查看MDN上的Iteration Protocols以更加深入地了解如何使用它们。 for ... of
仍然存在,但您可以在某些事情上使用新的var x = new Set
x.add(1)
x.add(2)
x.values()
。
考虑您的代码:
var y = x.values();
我们这样说,y
,for(let item of iterable){}
是迭代器;
为了遍历所述迭代器,您使用for(let z of x){
console.log(z);
}
循环。在这种情况下,您将使用:
1
2
哪个会打印出来:
synchronized (readyLock) { //sets this thread's status to ready
readyLock.notify();
System.out.println("notify works");
try {
readyLock.wait();
System.out.println("woke up from sleep");
} catch (InterruptedException ex) {
Logger.getLogger(Battleship_server_clientThread.class.getName()).log(Level.SEVERE, null, ex);
}
readyLock.notify();
}
while (true) { //game loop
//Some stuff here
synchronized (readyLock) { //sets this thread's status to ready
readyLock.notify();
System.out.println("notify works");
try {
readyLock.wait();
System.out.println("woke up from sleep");
} catch (InterruptedException ex) {
Logger.getLogger(Battleship_server_clientThread.class.getName()).log(Level.SEVERE, null, ex);
}
readyLock.notify();
}
//Some more stuff here
}
答案 1 :(得分:0)
值存在,只是util.inspect()
没有显示它们。这已经在使用88533881d的master中修复,这是在v4.1.2之后。所以每当v4.1.3发布时你都会看到修复。