我试图以非异步方式使用promise函数的结果。摘要的计算需要多长时间并不重要 - 我只是希望执行代码等待(阻塞,休眠,停止......),直到承诺的结果为止:
async function sha1(str) {
const r = await crypto.subtle.digest(`SHA-1`, new TextEncoder().encode(str));
return Array.prototype.map.call(new Uint8Array(r), x => x.toString(16).padStart(2, 0)).join(``);
}
function test(str) {
return sha1(str);
}
console.log(1);
console.log(test("abc"));
console.log(3);
console.log(test("def"));
只要我不在调试器中详细说明,生成的控制台日志总是在"待定"状态。
[Log] 1
[Log] Promise {status: "pending"}
[Log] 3
[Log] Promise {status: "pending"}
打开细节后,每个函数调用都有正确的结果:
[Log] Promise
result: "a9993e364706816aba3e25717850c26c9cd0d89d"
status: "resolved"
...
我很确定我会得到一个重复的问题"标签 - 但我找不到令人满意的答案。对于那个很抱歉。 大多数示例仅使用输出函数进行演示,但我需要从第二个函数返回值 ...