getJson('data/story.json')
.then(function(){
var answer = prompt("Do you like to break promise or keep promise?", "Yes");
if(answer == "Yes"){
//Promise.reject();
}else{
//Promise.reject();
}
})
.then(function(story) {
addHtmlToPage(story.heading);
// Update the URLs for next fetch
var chapterUrls = story.chapterUrls;
chapterUrls = chapterUrls.map(function(url){ return "data/"+url; });
// Take an array of promises and wait on them all
return Promise.all(
// Map our array of chapter urls
// to an array of chapter json promises
chapterUrls.map(getJson)
);
})
.then(function(chapters) {
// Now we have the chapters jsons in order! Loop thorugh...
chapters.forEach(function(chapter) {
// ..and add to the page
addHtmlToPage(chapter.html);
addTextToPage("One chapter is added")
});
addTextToPage("All done");
})
.catch(function(err) {
// catch any error that happened along the way
addTextToPage("Argh, broken: " + err.message);
})
.then(function() {
document.querySelector('.spinner').style.display = 'none';
});
I just insert a new .then() block directly after the call to getJson('data/story.json').
Question: after prompt....
resolve()s itself if the user clicked “OK”, and passes the story on to the next then() block.
reject()s itself if the user clicked “Cancel”, and passes an appropriate error object with a message key containing appropriate information.