I'm using Promises to synchronize my hashing functions within my node application:
var example_int = '1000121';
function MakeRequest(value){
var hash_result = RequestHash(example_int);
hash_result.then(function(v){
//Do stuff with v...
})
}
function RequestHash(value){
return(Hash(value))
}
function Hash(value){
var HashPromise = new Promise(function(resolve, reject){
var crypto = require('crypto');
var hash = crypto.createHash('md5');
hash.on('readable', () => {
var data = hash.read();
if(data){
var output = data.toString('hex');
resolve(output);
}
})
hash.write(value);
hash.end();
})
return(HashPromise);
}
MakeRequest();
However, I want to be able to access the resulting hash values from outside the Promise functions. My initial approach was to use re-assignment:
var example_int = '1000121';
function MakeRequest(value){
var hash_result = RequestHash(example_int);
//Hash output assigned to example_int....
}
function RequestHash(value){
return(Hash(value))
}
function Hash(value){
var HashPromise = new Promise(function(resolve, reject){
var crypto = require('crypto');
var hash = crypto.createHash('md5');
hash.on('readable', () => {
var data = hash.read();
if(data){
var output = data.toString('hex');
example_int = output; //Re-assignment...
resolve(output);
}
})
hash.write(value);
hash.end();
})
return(HashPromise);
}
MakeRequest();
Is there a safer way and/or more efficient method of performing this without the reliance on re-assingment?