有一个全局变量window.listNodes
,它是一个数组。该变量每3秒刷新一次,并依次填充。
另一个函数onOpen()
由用户触发,需要使全局变量window.listNodes
包含3个元素,不少于3个。
我想要做的是:如果全局变量的.length
不等于3,那么程序将等待代码的另一部分填充window.listNodes
,然后再次开始函数onOpen()
。
socket.onopen = function onOpen() {
if (window.listNodes.length === 3) {
// Do something
} else {
// Wait and when window.listNodes.length === 3:
onOpen();
}
});
};
有简单的方法吗?我尝试使用
setTimeOut()
函数,生成器函数和关键字yield
,但失败了。谢谢您的宝贵帮助:)
最佳答案
这可以使用setTimeout
和自定义间隔来等待,例如500ms,以这样做:
function onOpen() {
if (window.listNodes.length === 3) {
// Do something
} else {
// Wait and when window.listNodes.length === 3:
setTimeout(onOpen, 500);
}
});
};
socket.onopen = onOpen;