一个socket.io回调(来自客户端)是否会中断当前正在执行的另一个函数?
例如 - 一个处理数组的函数,数组内容可能会因另一个客户端的结果而改变:
socket.on('user_joined', function(uid) {
users.push(uid);
});
socket.on('user_left', function(uid) {
users.splice(users.indexOf(uid), 1);
});
socket.on('a_random_function', function() {
for (uid in users) {
do something with users[uid]
}
});
答案 0 :(得分:0)
一个socket.io回调(来自客户端)是否会中断当前正在执行的另一个函数?
没有
事件永远不会中断函数。
事件循环将检查事件触发函数的队列,只有在它完成后才能运行。
答案 1 :(得分:0)
是socket.io异步
是,所有NodeJS I / O都是(或应该)异步。
我是否需要锁定全局数组/变量?
否,任何时候只有一个线程正在执行您的Javascript。事实上没有"锁定"可用的概念等同于您的想象。
也许您会发现NodeJS Event Loop Fundamendals及其答案有用。