0

我有 node.js 的问题。该程序的命令不会按时间顺序加载,我不知道该怎么做。我正在尝试从数据库中下载一些图像和文本,并以 8 个为一组发送。但是 node.js 同时运行循环和命令循环。

这是我的代码:

socket.on('background_dinamically', function(data){
        connection.query("SELECT * FROM products WHERE id='"+data.cathegory+"'" , function(err, rows, fields){
            var count = 0;
            var array_elements = [];
            if(err){
                socket.emit('errorserver');
            }else{
                for (var i = rows.length - 1, count; i >= 0; i-- & count ++) {
                    array_elements.push(rows[i]);
                    if (count == 8) {
                        socket.emit('image_loading_background', [array_elements, data]);
                        count = 0;
                        array_elements = [];
                    }
                };

                if(count > 0 && count < 8 && count != 0) { 
                    socket.emit('image_loading_background', [array_elements, data]);
                }
            }
        });
    }); 
4

2 回答 2

0

Marc,首先我会检查是否可以在客户端进行同步。如果您在将数据发送到客户端之前强制您的 nodejs 应用程序进行同步,那么可伸缩性就会受到影响。

如果您无法在服务器端进行同步,您可以在意大利面条代码或同步库之间进行选择。

于 2013-01-23T20:00:55.440 回答
0

欢迎来到异步(非按时间顺序)编程的世界。如您所见,默认情况下,节点将并行处理 I/O 操作。要获得其他行为,包括按时间顺序(串行)、并行批处理以及错误处理帮助程序,请查看许多可用的流控制库之一。具体来说,我推荐caolan/async

于 2013-01-23T19:31:05.763 回答