Steps provide to reproduce..
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)
}
}
above code outputs me following results which are expected..
So now, I use the same code using a promise,
$(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;
};
output image of this code below:
Finally, this second code snippet "with promise" should display results as follows:
I have now added all the code of mine, the promise resolves only once and I get the resultMap to check on the success and failedIDs.. I want to iterate them to again dump them into loggers..