如何使Node JS事件侦听器异步

时间:2018-12-10 11:34:53

标签: javascript node.js asynchronous async-await event-listener

我正在尝试使用nodejs的加密模块获取文档的哈希值。
有2个函数,第一个函数将使用文件路径调用第二个函数,第二个函数将返回相应文件的哈希值。

const crypto = require("crypto");
const fs = require("fs");
const path = require("path");
// change the algo to sha1, sha256 etc according to your requirements
const algo = "sha256";
const shasum = crypto.createHash(algo);  

const hashTable = () => {
     let filePath = path.join("D:/Program/", "test.txt");
     let hash = generateHash(filePath);
     console.log(hash);
}

const generateHash = (filePath) => {
     const document = fs.ReadStream(filePath);
     document.on("data", async function(d) {
         shasum.update(d);
     });
     document.on("end", function() {
         const hash = shasum.digest("hex");
         console.log(hash);
         return hash;
     });

     return 0;
}
hashTable();

它总是返回0而不是哈希值。我知道事件侦听器尚未完成其任务。
如何等待事件侦听器返回哈希?我尝试使generateHash函数异步(异步),但是它不起作用。
谢谢!

0 个答案:

没有答案