Шаги для воспроизведения ..
const map = new Map()
let success = new Set()
let failed = new Set()
map.set('success', success)
map.set('failed', failed)
success.add(123)
failed.add(55)
success.add(456)
var iter = map.entries()
console.log(
'printing map output ==> ',
map,
'map.entries() ==> ',
map.entries(),
'iter.next().value ==> ',
iter.next().value,
'iter.next().value ==> ',
iter.next().value
)
for (const [key, value] of map.entries()) {
for (const val of value) {
console.log(key, val)
}
}
код выше выдает мне следующие ожидаемые результаты.

Итак, теперь я использую тот же код с обещанием,
$(button).submit(updateTags(enteredTags, tagName,contentIDs).then(
(resultMap) => {
console.log("result after promise ==> ", resultMap); // I get proper output here, please see the below image for this
for (const [key, value] of resultMap.entries()) {
for (const val of value) {
console.log("key ==> ", key,"value ==> ", val)// I don't get all the results here.. I am hurting my head with this, did I do any mistake ?
}
}
}));
let updateTags = (newTags, tagName, contentIds) => {
let deferred = Q.defer(),
resultMap = new Map(),
success_ids = [],
failed_ids = [],
counter = 1;
resultMap.set("success", success_ids);
resultMap.set("failed", failed_ids);
contentIds.forEach(function (contentId) {
var tags = [];
osapi.jive.core.get({
v: "v3",
href: "/contents/" + contentId + ""
}).execute(function (content) {
tags = content.tags;
content["tags"] = _.union(tags, newTags);
osapi.jive.core.put({
v: "v3",
href: "/contents/" + contentId + "",
body: content
}).execute(function (response) {
if (response.error) {
failed_ids.push(contentId);
} else {
success_ids.push(contentId);
}
if (counter === contentIds.length) {
deferred.resolve(resultMap);
$("#spinner").hide()
}
counter++;
deferred.resolve(resultMap);
}, function (error) {
failed_ids.push(contentId);
if (counter === contentIds.length) {
deferred.resolve(resultMap);
$("#spinner").hide()
}
counter++;
}
);
})
});
return deferred.promise;
};
вывод изображения этого кода ниже:

Наконец, этот второй фрагмент кода "с обещанием" должен отображать результаты следующим образом:

Теперь я добавил весь свой код, обещание разрешается только один раз, и я получаю resultMap для проверки успешности и failIDs .. Я хочу повторить их, чтобы снова сбросить их в регистраторы ..