2017-10-21 47 views
0

hash.jsNode.js的 - 我想變種「哈希」出來的功能

var crypto = require('crypto'), 
    fs = require('fs') 

var algorithm = 'sha256', 
    shasum = crypto.createHash(algorithm) 

// Updating shasum with file content 
var filename = __dirname + "/hufs.png", 
    s = fs.ReadStream(filename) 
s.on('data', function(data) { 
    shasum.update(data) 
}) 

// making digest 
s.on('end', function() { 
    var hash = shasum.digest('hex') // this var 
    console.log(hash + ' ' + filename) 
}) 

我有一個這樣的代碼,那麼我想打電話給一個變種「哈希」出來的功能

我不知道該怎麼做,我想固定碼

我需要你的幫助

+0

你的哈希將是「不確定」'hash'在本地範圍內。將'var hash = null'放在作用域之外,並將'var hash'編輯爲'hash'。這應該允許你在'onEnd'函數之外使用'hash'的值。如果那不是你想要的,請提供你想要的例子並且改述你的問題。 – Jeffrey

回答

0

爲了讓您的哈希的結果,你必須得到的值之後,「結束」事件是triggerd如果你做了相同的代碼這樣

var hash; 
s.on('end', function() { 
    hash = shasum.digest('hex') // this var 
    console.log(hash + ' ' + filename) 
}) 
console.log(hash); 

後因事件觸發「的console.log(散)」,將已執行

var crypto = require('crypto'), 
    fs = require('fs') 

var algorithm = 'sha256', 
    shasum = crypto.createHash(algorithm) 

// Updating shasum with file content 
var filename = __dirname + "/3.png", 
    s = fs.ReadStream(filename) 

s.on('data', function(data) { 
    shasum.update(data) 
}) 

// making digest 
var hash; 
s.on('end', function() { 
    hash = shasum.digest('hex') // this var 
    console.log(hash + ' ' + filename) 
}) 
// Here I simulate some code that will be executed after the "end" event was trigger 
setTimeout(function(){ 
    console.log(hash); 
},5000);