Update hashNode
This commit is contained in:
@ -1,11 +1,14 @@
|
|||||||
---
|
---
|
||||||
title: hashNode
|
title: hashNode
|
||||||
tags: node,promise,intermediate
|
tags: node,promise,advanced
|
||||||
---
|
---
|
||||||
|
|
||||||
Creates a hash for a value using the [SHA-256](https://en.wikipedia.org/wiki/SHA-2) algorithm. Returns a promise.
|
Creates a hash for a value using the [SHA-256](https://en.wikipedia.org/wiki/SHA-2) algorithm.
|
||||||
|
Returns a promise.
|
||||||
|
|
||||||
- Use `crypto` API to create a hash for the given value, `setTimeout` to prevent blocking on a long operation, and a `Promise` to give it a familiar interface.
|
- Use `crypto.createHash()` to create a `Hash` object with the appropriate algorithm.
|
||||||
|
- Use `hash.update()` to add the data from `val` to the `Hash`, `hash.digest()` to calculate the digest of the data.
|
||||||
|
- Use `setTimeout()` to prevent blocking on a long operation, and return a `Promise` to give it a familiar interface.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
const crypto = require('crypto');
|
const crypto = require('crypto');
|
||||||
@ -13,18 +16,15 @@ const crypto = require('crypto');
|
|||||||
const hashNode = val =>
|
const hashNode = val =>
|
||||||
new Promise(resolve =>
|
new Promise(resolve =>
|
||||||
setTimeout(
|
setTimeout(
|
||||||
() =>
|
() => resolve(crypto.createHash('sha256').update(val).digest('hex')),
|
||||||
resolve(
|
|
||||||
crypto
|
|
||||||
.createHash('sha256')
|
|
||||||
.update(val)
|
|
||||||
.digest('hex')
|
|
||||||
),
|
|
||||||
0
|
0
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
```
|
```
|
||||||
|
|
||||||
```js
|
```js
|
||||||
hashNode(JSON.stringify({ a: 'a', b: [1, 2, 3, 4], foo: { c: 'bar' } })).then(console.log); // '04aa106279f5977f59f9067fa9712afc4aedc6f5862a8defc34552d8c7206393'
|
hashNode(JSON.stringify({ a: 'a', b: [1, 2, 3, 4], foo: { c: 'bar' } })).then(
|
||||||
|
console.log
|
||||||
|
);
|
||||||
|
// '04aa106279f5977f59f9067fa9712afc4aedc6f5862a8defc34552d8c7206393'
|
||||||
```
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user