下面是代码,我试图通过套接字中的ajax添加图像。但是当我以这种方式运行代码时,所有数据都会附加到最后一个图像,即使它处于循环状态。
socket.on('start', function (cou) {
for (var i = 0; i < cou.length; i++) {
var image = document.getElementById('cam'+i);
var divSocket = io(location.origin + 'cam'+i);
divSocket.on('data', function (data) {
var bytes = new Uint8Array(data);
image.src = 'data:image/jpeg;base64,' + bytes;
});
};
});
有人可以告诉我哪里出错了吗?
> node.js 将开始异步执行此循环,这意味着它不会等到完成写入,因此变量 i 的值会发生变化。 请改用异步循环,如下所示:
socket.on('start', function (cou) {
let i = 0;
async.eachLimit(cou, 1, function(el, done){
var image = document.getElementById('cam'+i);
var divSocket = io(location.origin + 'cam'+i);
divSocket.on('data', function (data) {
var bytes = new Uint8Array(data);
image.src = 'data:image/jpeg;base64,' + bytes;
});
divSocket.on('end', function () {
i++;
done();
});
};
});
看看这里
p.s:我没有运行代码只是要注意:)