Guest User

Untitled

a guest
Jan 22nd, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.39 KB | None | 0 0
  1. app.LoadA( function cba() {
  2. app.LoadB( function cbb() {
  3. ....
  4. app.LoadC( function cbc() {
  5. ...
  6. app.LoadD( function cbd() {
  7. ...
  8. } );
  9. } );
  10. } );
  11. } );
  12.  
  13. LoadA( cb )
  14. {
  15. let url = '.........'; // just an url
  16. let req = new XMLHttpRequest();
  17. req.open('GET', url, true);
  18. req.responseType = 'arraybuffer';
  19.  
  20. let lh = this;
  21.  
  22. req.onload = function ol(event)
  23. {
  24. let arrayBuffer = req.response;
  25. let loadedObject = Convert( arrayBuffer, ......... );
  26. cb( loadedObject ); // call, if successed!
  27. }
  28. req.send(null);
  29. }
  30. ....
  31.  
  32. loadA().then(function() {
  33. loadB().then(function() {
  34. loadC().then(...
  35. });
  36. });
  37.  
  38. loadA().then(function() {
  39. return loadB();
  40. ).then(...)
  41.  
  42. loadA().then(loadB).then(loadC).then(...)
  43.  
  44. function wrapInsidePromise(f) {
  45. return new Promise(function(resolve, reject) {
  46. f(function() {
  47. resolve();
  48. });
  49. });
  50. }
  51.  
  52. var pLoadA = wrapInsidePromise(app.loadA);
  53. var pLoadB = wrapInsidePromise(app.loadB);
  54. ...
  55.  
  56. pLoadA().then(pLoadB).then(...);
  57.  
  58. async function() {
  59. await loadA();
  60. await loadB();
  61. ...
  62. let finalResult = await loadN();
  63. ...
  64. }
  65.  
  66. app = {
  67.  
  68. loadA: function() {
  69. return new Promise((resolve) => {
  70. console.log('Loading A');
  71. resolve();
  72. });
  73. },
  74.  
  75. loadB: function () {
  76. return new Promise((resolve) => {
  77. console.log('Loading B');
  78. resolve();
  79. });
  80. },
  81.  
  82. // For demonstration, I have coded loadC with a rejection if it fails
  83. // (Success is based on a random boolean)
  84. loadC: function () {
  85. return new Promise((resolve, reject) => {
  86. console.log('Loading C');
  87. var success = Math.random() >= 0.5;
  88. if( success ){
  89. resolve();
  90. } else {
  91. reject('C did not load');
  92. }
  93.  
  94. });
  95. },
  96.  
  97. loadD: function () {
  98. return new Promise((resolve) => {
  99. console.log('Loading D');
  100. resolve();
  101. });
  102. }
  103.  
  104. };
  105.  
  106. // A global function for reporting errors
  107. function logError(error) {
  108. // Record the error somehow
  109. console.log(error);
  110. }
  111.  
  112. app.loadA().then(app.loadB).then(app.loadC, logError).then(app.loadD);
  113.  
  114. app.loadA().then(app.loadD).then(app.loadB).then(app.loadC, logError);
Add Comment
Please, Sign In to add comment