我在浏览器中运行了一些JavaScript代码,其中有一个非常复杂的对象,并且其中一个字段包含一个字符串,我需要用该字符串的哈希替换。内置了SHA-512实现,但是我无法弄清楚如何同步调用它,以使执行暂停并等待结果。我尝试了此操作(适应了from here):
digestMessage = async (dataString) => {
let encoder = new TextEncoder();
let data = encoder.encode(dataString);
const hash = await crypto.subtle.digest('SHA-512', data);
return hash;
};
digest = async (data) => {
try {
const result = await digestMessage(data);
return result;
} catch (error) {
throw error;
}
};
调用:
myObject.fieldToTransform = digest(myObject.fieldToTransform);
//continue with the object
而且...当然,这给了我另一个诺言对象。用.then()
重写调用代码会使代码复杂化。我想要哈希,而不是诺言,以便我通过存储该哈希并将其进一步传递。
我如何计算哈希值,而不是答应?