有一个全局变量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;

09-16 07:42