Polymer: рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП importHref ()

рдХреЛ рдирд┐рд░реНрдорд┐рдд 15 рджрд┐рд╕ре░ 2015  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Polymer/polymer

importHref(href, onload, onerror) рдХреЗ рд╕рд╛рде рд╣рдо рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдПрдХ HTML рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЖрдпрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдлрд╛рдЗрд▓ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХрд╛рдзрд┐рдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

Promise.all рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ:

function importHref(href) {
  return new Promise((resolve, reject) => {
    Polymer.Base.importHref(href, function(e) {
      resolve(e.target);
    }, reject, true);
  });
}

// Usage
Promise.all([
  importHref('/elements.html'),
  importHref('/elements2.html'),
  importHref('/elements3.html')
]).then(values => { 
  values.forEach(val => console.log(val.import));
}, e => console.error(e));

http://jsbin.com/kazodirula/edit?html ,output

рдиреЛрдЯ: рдореИрдВ Polymer.Base.importHref рдкрд░ Polymer.Base.importHref async рдкрд░ рдирдП рдЪреМрдереЗ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдПрд╕рд┐рдВрдХреНрд╕ рдЖрдпрд╛рдд рдХреЛ рд▓реЛрдб рдХрд░реЗрдЧрд╛ рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдирд╣реАрдВ рд╣реИред

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрди рд╕рднреА рдХреЛ async рд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ onload рдХрд░рддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ onload рдпрд╛ рдХреНрдпрд╛? рдХреБрдЫ рд╡рд┐рдЪрд╛рд░...

Polymer.importHrefs = (files, onload, onerror) =>
  files.forEach((file, i, files) =>
    Polymer.importHref(file, onload, onerror));

рдпрд╛ рдмреНрд░реЗрдХ рдСрдирд░рд░ рдХреЗ рд╕рд╛рде рдПрд╕рд┐рдВрдХреНрд╕:

Polymer.importHrefs = (files, onload, onerror, i = 0) =>
  Polymer.importHref(file, (i === files.length - 1) ? onload : Polymer.importHrefs(files, onload, onerror, i + 1), onerror);

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рд╡рд╛рджреЗ рдореЗрдВ importHref рд▓рдкреЗрдЯреВрдВрдЧрд╛ ...

Promise.all рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ:

function importHref(href) {
  return new Promise((resolve, reject) => {
    Polymer.Base.importHref(href, function(e) {
      resolve(e.target);
    }, reject, true);
  });
}

// Usage
Promise.all([
  importHref('/elements.html'),
  importHref('/elements2.html'),
  importHref('/elements3.html')
]).then(values => { 
  values.forEach(val => console.log(val.import));
}, e => console.error(e));

http://jsbin.com/kazodirula/edit?html ,output

рдиреЛрдЯ: рдореИрдВ Polymer.Base.importHref рдкрд░ Polymer.Base.importHref async рдкрд░ рдирдП рдЪреМрдереЗ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдпрд╣ рдПрд╕рд┐рдВрдХреНрд╕ рдЖрдпрд╛рдд рдХреЛ рд▓реЛрдб рдХрд░реЗрдЧрд╛ рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдирд╣реАрдВ рд╣реИред

рджреЛрдиреЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рдж!

рд╣рд╛рдп @рдПрдмрд┐рдбреЗрд▓ ,

рдореИрдВрдиреЗ рдХрдИ рддрддреНрд╡реЛрдВ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рд▓реЗрдХрд┐рди рд╕рд░рдгреА рдореЗрдВ рдкрд╣рд▓реЗ рддрддреНрд╡ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдмрд╛рдХреА рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред

рдЕрдиреНрдп рддрддреНрд╡ рддреНрд░реБрдЯрд┐ рджреЗ рд░рд╣реЗ рд╣реИрдВ "$" рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреЗ рд▓рд┐рдП "this.$.*" , рдЬрдм рднреА рдЙрд╕ рдкреЙрд▓рд┐рдорд░ рддрддреНрд╡ рдХреЗ рдЕрдВрджрд░ рдкрд╣реБрдБрдЪрддреЗ рд╣реИрдВред

рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕рдХрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рд╣реИ рддреЛ рдпрд╣ рдмрд╣реБрдд рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ред

"рдЕрдирдХреЙрдЯреЗрдб рдЯрд╛рдЗрдк рдПрд░рд░: рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рд╕рдВрдкрддреНрддрд┐ 'somefuntion' рдирд╣реАрдВ рдкрдврд╝ рд╕рдХрддрд╛"

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

SergRZ picture SergRZ  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

limonte picture limonte  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alexhx5 picture alexhx5  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

myuseringithub picture myuseringithub  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

derhuebiii picture derhuebiii  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ