Javascript NODE.JS按特定顺序执行代码
我有一些代码解析pcap文件,并将解析后的数据写入数组Javascript NODE.JS按特定顺序执行代码,javascript,node.js,Javascript,Node.js,我有一些代码解析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
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);
var fs=require(“fs”);
var pcapp=require('pcap-parser');
var hex=“”;
var数据=[];
var i=0;
函数hex2a(hexx){
var hex=hexx.toString();//强制转换
var-str='';
对于(变量i=0;i('0'+0.toString(16)).slice(-2)).join();
var ticker=hex2a(十六进制子字符串(282306)。替换(/,/g,“”);
var bidPrice=parseInt(十六进制子字符串(318342).split(“,”).reverse().join(“,”),16);
var timestamp=parseInt(十六进制子字符串(258282).split(“,”).reverse().join(“,”),16);
if(packet.header.capturedLength==126&&ticker==“AAPL”){
数据[2*i]=投标价格;
数据[2*i-1]=时间戳;
我++
}
});
data=JSON.stringify(数据);
fs.writeFile(“C:/Users/Brandt Winkler-Prins/Desktop/Project/data.json”,data);
所有数据都会写入解析器中相应的数组。on(…)
但是node.js在执行解析器上(…)之前会执行my.writeFile
命令。总之,我的问题是:如何在编写文件之前强制node执行代码
非常感谢您的帮助 解析器将一次从文件中读取一个数据包,并为每个数据包提出
on()
方法
在写入文件之前,您如何知道已达到数据包的数量
你可以做:
check\u finished\u和
,将其添加到()上的末尾,并控制没有更多数据可读取。如果是,则写入文件
a
forappend
)。每次调用on()
时,您都会将结果附加到文件末尾捕获解析器的结束事件,并执行字符串化和写入文件操作等操作
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);
});
只是想说声谢谢然后拿到评论员徽章