jws предлагает как syn c, так и asyn c версии нескольких функций, которые он предоставляет.
Какая asyn c работа выполняется в asyn c версии?
Например, вот как используется createSign
:
jws.createSign({
header: { alg: 'RS256' },
privateKey: privateKeyStream,
payload: payloadStream,
}).on('done', function(signature) {
// ...
});
Из просмотра источника и зависимостей я могу не понял это. Некоторые причины для создания асинхронного API c:
, чтобы не буферизовать ввод в память
для разгрузки работы на работника
для реализации части функциональности в Wasm
Я не смог найти ничего из этого происходящего.
Ядро похоже, что работа происходит в jwa
, который, насколько я могу судить, является синхронным:
const signature = hmac.sign(input, secret);
hmac.verify(input, signature, secret) // === true;
Есть ли потоковый API там просто для удобства, когда ввод читаемый поток вместо строки? Эффективно ли то же самое, что (псевдокод): streamToPromise(readableStream).then(str => createSignSync(str))
? Или есть подлинная асин c работа, которую jws делает для нас, что я как-то скучаю?