2017-10-21 222 views
0

hash.jsNode.js - je veux obtenir var 'hash' de la fonction

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) 
}) 

je un code, alors je veux appeler un var 'hachage' de fonction

je ne sais pas quoi faire, je veux code fixe

i besoin de votre aide

+0

'hash' est dans la portée locale. Placez 'var hash = null' en dehors de la portée, et éditez' var hash' à 'hash'. Cela devrait vous permettre d'utiliser la valeur de 'hash' en dehors de la fonction' onEnd'. Si ce n'est pas ce que vous voulez, donnez des exemples de ce que vous voulez et reformulez votre question. – Jeffrey

Répondre

0

pour obtenir le résultat de votre hachage, vous devez obtenir la valeur après l'événement « fin » est triggerd et si vous avez même code comme celui-ci

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

Votre hachage sera « non défini », car après l'événement déclenche votre « console.log (hachage) » aura été exécuté

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);