index.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // Изменим условие предыдущего задания
  2. // Массив messages, объект log и функция sendMessage остаются теми же
  3. // Немного изменится метод getKey:
  4. // messages.getKey = () => new Date().toLocaleTimeString()
  5. // Нужно напилить код рекурсивной функции recursive, которая вызывает sendMessage поочередно с каждым элементом массива messages, но только после того, как предыдущий месседж будет залогирован в объекте log
  6. // var messages = [
  7. // "backspace",
  8. // "enter",
  9. // "shift",
  10. // "control",
  11. // "delete",
  12. // "space",
  13. // "subtract"
  14. // ]
  15. // messages.getKey = () => new Date().toLocaleTimeString()
  16. // var log = {}
  17. // var sendMessage = message => new Promise (
  18. // resolve => setTimeout (
  19. // () => resolve ( message ),
  20. // Math.random () * 7000
  21. // )
  22. // );
  23. (function() {
  24. var messages = [
  25. "backspace",
  26. "enter",
  27. "shift",
  28. "control",
  29. "delete",
  30. "space",
  31. "subtract"
  32. ]
  33. messages.getKey = () => new Date().toLocaleTimeString()
  34. var log = {}
  35. var sendMessage = message => new Promise (
  36. resolve => setTimeout (
  37. () => resolve ( message ),
  38. Math.random () * 7000
  39. )
  40. );
  41. var sendAll = () => {
  42. var index = 0
  43. function recursive () {
  44. sendMessage ( messages[index] )
  45. .then (
  46. message => {
  47. ( log [ `${messages.getKey()}[${index}]` ] ) = message;
  48. index++;
  49. index < (messages.length ) ? recursive() : null
  50. })
  51. }
  52. recursive ()
  53. }
  54. sendAll()
  55. setTimeout(() => {console.log(log)}, 7000)
  56. }) ()