Quick actions

cmd+k|ctrl+k

Navigation

Languages

A promise

Snippet info

Language

JavaScript

Visibility

public

Author

soham57

Created

2023-03-23T15:19:05.892353Z

Updated

2023-03-23T15:19:05.892353Z

class Bookshelf {
	constructor() {
		this.favoriteBooks = [];
	}
	addFavoriteBook(bookName) {
		if (!bookName.includes("Great")) {
			this.favoriteBooks.push(bookName);
		}
	}
	printFavoriteBooks() {
		console.log(`Favorite Books: ${String(this.favoriteBooks.length)}`);
		for (let bookName of this.favoriteBooks) {
			console.log(bookName);
		}
	}

	
}

let myShelf= new Bookshelf();
loadBooks(myShelf);
var BOOK_API = "https://some.url/api";

async function loadBooks(bookshelf) {
  try {
    const bookNames = await new Promise((resolve, reject) => {
      fakeAjax(BOOK_API,resolve);
    });
    
    for (let bookName of bookNames) {
      bookshelf.addFavoriteBook(bookName);
    }
    
    bookshelf.printFavoriteBooks();
  } catch (error) {
    console.error(error);
  }
}






// ***********************

// NOTE: don't modify this function at all
function fakeAjax(url,cb) {
	setTimeout(function fakeLoadingDelay(){
		cb([
			"A Song of Ice and Fire",
			"The Great Gatsby",
			"Crime & Punishment",
			"Great Expectations",
			"You Don't Know JS"
		]);
	},100);
}
INFO