Advertisement
rg443

fetchAsync ES6 ES5

Jan 3rd, 2018
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // http://es6-features.org/
  2.  
  3. // ECMAScript 6
  4. function fetchAsync (url, timeout, onData, onError) {
  5.     …
  6. }
  7. let fetchPromised = (url, timeout) => {
  8.     return new Promise((resolve, reject) => {
  9.         fetchAsync(url, timeout, resolve, reject)
  10.     })
  11. }
  12. Promise.all([
  13.     fetchPromised("http://backend/foo.txt", 500),
  14.     fetchPromised("http://backend/bar.txt", 500),
  15.     fetchPromised("http://backend/baz.txt", 500)
  16. ]).then((data) => {
  17.     let [ foo, bar, baz ] = data
  18.     console.log(`success: foo=${foo} bar=${bar} baz=${baz}`)
  19. }, (err) => {
  20.     console.log(`error: ${err}`)
  21. })
  22.  
  23. // ECMAScript 5
  24. function fetchAsync (url, timeout, onData, onError) {
  25.  
  26. }
  27. function fetchAll (request, onData, onError) {
  28.     var result = [], results = 0;
  29.     for (var i = 0; i < request.length; i++) {
  30.         result[i] = null;
  31.         (function (i) {
  32.             fetchAsync(request[i].url, request[i].timeout, function (data) {
  33.                 result[i] = data;
  34.                 if (++results === request.length)
  35.                     onData(result);
  36.             }, onError);
  37.         })(i);
  38.     }
  39. }
  40. fetchAll([
  41.     { url: "http://backend/foo.txt", timeout: 500 },
  42.     { url: "http://backend/bar.txt", timeout: 500 },
  43.     { url: "http://backend/baz.txt", timeout: 500 }
  44. ], function (data) {
  45.     var foo = data[0], bar = data[1], baz = data[2];
  46.     console.log("success: foo=" + foo + " bar=" + bar + " baz=" + baz);
  47. }, function (err) {
  48.     console.log("error: " + err);
  49. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement