@netz-sanya

Почему JSON.stringify выодит пустой результат?

var orb = {};
var abc = JSON.parse(localStorage.getItem("itemData"));
for (var key in abc) {
	for (var i = 0; i < abc[key].length; i++) {
		var p = {};
		p["p"] = abc[key][i].p;
		p["id"] = abc[key][i].id;
		Tools.sha1(abc[key][i].m).then(function(digest) {
			orb[digest] = p;
		});
	}
}
console.log(JSON.stringify(orb));

Данный код выводит:
{}
Но, если выполнить в консоли браузера сначала:
var orb = {};
var abc = JSON.parse(localStorage.getItem("itemData"));
for (var key in abc) {
	for (var i = 0; i < abc[key].length; i++) {
		var p = {};
		p["p"] = abc[key][i].p;
		p["id"] = abc[key][i].id;
		Tools.sha1(abc[key][i].m).then(function(digest) {
			orb[digest] = p;
		});
	}
}

а потом
console.log(JSON.stringify(orb));
То json генерируется.
Объектов 10000+
Почему так, и как это исправить?
  • Вопрос задан
  • 308 просмотров
Пригласить эксперта
Ответы на вопрос 1
VasiliyIsaichkin
@VasiliyIsaichkin
Web front/back-end (JS-full stack) app developer
let Tools = {};

function hex(buffer) {
	let hexCodes = [];
	let view = new DataView(buffer);
	for (let i = 0; i < view.byteLength; i += 4) {
		let stringValue = view.getUint32(i).toString(16);
		let padding = '00000000';
		hexCodes.push((padding + stringValue).slice(-padding.length));
	}
	return hexCodes.join('');
}

Object.assign(Tools, {
	sha1: async (str) => hex(await crypto.subtle.digest('SHA-1', new TextEncoder('utf-8').encode(str)))
});


(async () => {
	let result = await Tools.sha1('Blabla1a');
	console.log(result);
})();

И никакого стресса с двигателем прогресса :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы