Guest User

Untitled

a guest
Nov 16th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. var spinner = document.querySelector('.spinner');
  2. var content = document.querySelector('.content');
  3. var refreshButton = document.querySelector('.refreshButton');
  4.  
  5. function networkRequest() {
  6. return new Promise((resolve, reject) => {
  7. const requestTime = 200; // request duration (for simulation) => 200ms
  8.  
  9. setTimeout(resolve, requestTime, { payload: { 'foo': 'bar' } });
  10. });
  11. }
  12.  
  13. function waitAtLeast(time, promise) {
  14. const timeoutPromise = new Promise((resolve) => {
  15. setTimeout(resolve, time);
  16. });
  17. return Promise.all([promise, timeoutPromise]).then((values) => values[0]);
  18. };
  19.  
  20. function makeRequest() {
  21. spinner.classList.add('visible'); // show spinner
  22.  
  23. let promise = networkRequest();
  24. promise = waitAtLeast(800, promise); // wait 800ms, evenif request takes less time (to avoid animation flickering)
  25.  
  26. promise.then((data) => {
  27. content.textContent = `Updated data, payload: ${data.payload.foo + new Date()}`;
  28. spinner.classList.remove('active'); // hide spinner
  29. });
  30. }
  31.  
  32. refreshButton.addEventListener('click', () => {
  33. makeRequest();
  34. })
Add Comment
Please, Sign In to add comment