繁体   English   中英

NODE.JS按特定顺序执行代码

[英]NODE.JS Execute Code in specific order

我有一些代码解析pcap文件并将解析后的数据写入数组data = [] ,然后将该数据写入JSON文件:

var fs = require("fs");
var pcapp = require('pcap-parser');
var hex = "";
var data = [];
var i = 0;

function hex2a(hexx) {
    var hex = hexx.toString();//force conversion
    var str = '';
    for (var i = 0; i < hex.length; i += 2)
        str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
        return str;
}

var parser = pcapp.parse('C:/Users/Brandt Winkler Prins/Desktop/data.pcap');
parser.on('packet', function(packet) {
    hex = [...packet.data].map(_ => ('0' +_.toString(16)).slice(-2)).join();
    var ticker = hex2a(hex.substring(282, 306).replace(/,/g,""));
    var bidPrice = parseInt(hex.substring(318,342).split(",").reverse().join(""), 16);
    var timestamp = parseInt(hex.substring(258, 282).split(",").reverse().join(""), 16);
    if(packet.header.capturedLength == 126 && ticker == "AAPL    ") {
       data[2*i] = bidPrice;
       data[2*i-1] = timestamp;
       i++
    }
 });
 data = JSON.stringify(data);
fs.writeFile("C:/Users/Brandt Winkler Prins/Desktop/Project/data.json",data);

所有数据都在parser.on(...)写入其各自的数组,但是node.js在执行parser.on(...)之前执行我的.writeFile命令。 总而言之,我的问题是:在编写文件之前如何强制节点执行我的代码?

任何帮助是极大的赞赏。

您的解析器将从文件中一次读取一个数据包,并为每个数据包引发on()方法。

在写入文件之前,您如何知道已达到数据包的数量?

你可以这样做:

  1. 创建一个简单的方法,比如你在on()末尾添加的check_finished_and_save() ,它控制着没有更多的数据可供读取。 如果是,则写入文件。

  2. 您可以简单地将结果附加到文件中(模式a用于append )。 每次调用on()on()都会将结果附加到文件末尾。

捕获解析器的结束事件,并执行stringify和写入文件操作等操作

parser.on('end', function (session) {
    data = JSON.stringify(data);
    fs.writeFile("C:/Users/Brandt Winkler Prins/Desktop/Project/data.json",data);
});

完成解析后需要写入文件

parser.on('end', function(){
  data = JSON.stringify(data);
  fs.writeFile("C:/Users/Brandt Winkler Prins/Desktop/Project/data.json",data);
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM