Guest User

Untitled

a guest
May 21st, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.82 KB | None | 0 0
  1. ```js
  2. class DataSource {
  3. constructor() {
  4. let i = 0
  5. this._id = setInterval(() => {
  6. this.emit(i++);
  7. }, 1000);
  8. }
  9.  
  10. emit(n) {
  11. let limit = 10;
  12. if (this.ondata) {
  13. this.ondata(n);
  14. }
  15.  
  16. if (limit == n) {
  17. if (this.oncomplete) {
  18. this.oncomplete();
  19. }
  20. this.destroy();
  21. }
  22. }
  23.  
  24. destroy() {
  25. clearInterval(this._id);
  26. }
  27. }
  28.  
  29. let Producer = consumer => {
  30. let dataSource = new DataSource()
  31. dataSource.ondata = data => consumer.next(data)
  32. dataSource.onerror = err => consumer.error(err)
  33. dataSource.oncomplete = () => consumer.complete()
  34.  
  35. return () => {
  36. dataSource.destroy();
  37. }
  38. }
  39.  
  40. let consumer = {
  41. next(data) { console.log(data) },
  42. complete() { console.log("Done") },
  43. error(err) { console.error(err) }
  44. };
  45.  
  46. Producer(consumer); // 0 1 2 3 4 5 .........n
Add Comment
Please, Sign In to add comment