Just thought I'd mention this article on promises...it mentions their use for synchronous stuff too (mixing them), so thought it might be of interest : < http://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html?utm_source=javascriptweekly&utm_medium=email >
Max. On Sat, 2 Jan 2016, 06:27 Darin Hensley <[email protected]> wrote: > Ok, that issue just hit me again so here it is with the details: > > https://github.com/Polymer/polymer/issues/3262 > > > On Wednesday, December 30, 2015 at 5:31:51 AM UTC-6, David Waterman wrote: > >> Did you file a bug? >> >> Thanks, >> >> Max. >> >> On Sun, 27 Dec 2015 at 21:33 Darin Hensley <[email protected]> wrote: >> > Thanks, I originally did this but I realized using a promise is a bad fit. >>> The reason being, the queries used are blocking since they are non I/O, >>> which means sync. I am still implementing a function that is checking and >>> redoing if so, but without a promise. >>> >>> However, I feel that this might be a bug in polymer because when dom >>> manipulation js script is placed last in chrome, then all elements are >>> garuanteed to be ready. This is from documentation(in the 0.5 to 1.0 >>> migration docs). I will file a bug tonight. >>> >>> >>> >>> On Sunday, December 27, 2015 at 9:27:48 PM UTC, David Waterman wrote: >>> >>>> I just thought that my approach to this issue would be to create a >>>> promise for each event (each event handler resolves its promise), and then >>>> do Promise.all(). If you do this, you can test for native support of web >>>> components which means 'webcomponentsready' doesn't fire at all[0], and >>>> resolve it immediately, and your code will still work when Polymer change >>>> to using native web components... >>>> >>>> Max. >>>> [0] < >>>> https://www.polymer-project.org/1.0/docs/migration.html#polymer-ready> >>>> >>>> On Sun, 27 Dec 2015 at 03:44 Darin Hensley <[email protected]> wrote: >>>> >>> It's been working for many refreshes...but it just happened again... I >>>>> got 'Uncaught TypeError: Cannot read property 'addEventListener' of >>>>> undefined' for 'panel.addEventListener("content-scroll", moveTitle);'. >>>>> This >>>>> is in chrome where the initialize.js script is loaded last in the >>>>> index.html. >>>>> >>>>> function makeGlobalElements() { >>>>> //elements is not routing list, routing list is elementList >>>>> >>>>> panel = Polymer.dom(document.rootElement).querySelector( >>>>> 'paper-header-panel[main]'); >>>>> rippleElement = Polymer.dom(document.rootElement).querySelector( >>>>> '#ripple-element'); >>>>> toolbar = Polymer.dom(document.rootElement).querySelector( >>>>> '#main-toolbar'); >>>>> headerName = Polymer.dom(document.rootElement).querySelector( >>>>> '#name-title'); >>>>> drawer = Polymer.dom(document.rootElement).querySelector( >>>>> 'paper-drawer-panel'); >>>>> mainPanelContent = Polymer.dom(document.rootElement).querySelector( >>>>> '#mainPanelContent'); >>>>> >>>>> }; >>>>> >>>>> >>>>> function attatchListeners() { >>>>> panel.addEventListener("content-scroll", moveTitle); >>>>> >>>>> .... >>>>> >>>>> >>>>> function initializeYay() { >>>>> makeGlobalElements(); >>>>> attatchListeners(); >>>>> setUpRoutes(); >>>>> removeSplash(); >>>>> //fetchPdfjs(); >>>>> } >>>>> >>>>> if (!webComponentsSupported) { >>>>> document.addEventListener('WebComponentsReady', initializeYay); >>>>> } else { >>>>> initializeYay(); >>>>> page('/portfolio'); >>>>> } >>>>> >>>>> >>>>> >>>>> ---- >>>>> >>>>> On Friday, December 25, 2015 at 9:37:55 AM UTC-6, Eric Bidelman wrote: >>>>> >>>>>> You can attach listeners to elements before they're upgraded and >>>>>> ready. That's a nice property of custom elements and DOM events. Waiting >>>>>> to >>>>>> attach until WCR means you may miss the event the first time it's fired. >>>>>> >>>>>> On Thu, Dec 24, 2015, 10:32 PM Darin Hensley <[email protected]> >>>>>> wrote: >>>>>> >>>>> I am having issues(not consistent....random) where the elements are >>>>>>> not ready when I attach the listeners. I placed a setTimeout to try and >>>>>>> compensate the random race condition. Should these elements be ready >>>>>>> during >>>>>>> the time of their queries when WebComponentsReady fires or with the >>>>>>> initialize.js script placed last at the bottom of the index.html? >>>>>>> function makeGlobalElements() { >>>>>>> //elements is not routing list, routing list is elementList >>>>>>> panel = document.querySelector('paper-header-panel[main]'); >>>>>>> rippleElement = document.getElementById('ripple-element'); >>>>>>> toolbar = document.querySelector('#main-toolbar'); >>>>>>> headerName = document.getElementById('name-title'); >>>>>>> drawer = document.querySelector('paper-drawer-panel'); >>>>>>> mainPanelContent = document.getElementById('mainPanelContent'); >>>>>>> }; >>>>>>> >>>>>>> function attatchListeners() { >>>>>>> panel.addEventListener("content-scroll", moveTitle); >>>>>>> ['webkitAnimationEnd', 'animationend'] >>>>>>> .forEach(function(vendor) { >>>>>>> mainPanelContent.addEventListener(vendor, function >>>>>>> (animationEvent) { >>>>>>> if (animationEvent.animationName === "slide-down") { >>>>>>> afterSlideDown.runStack(); >>>>>>> mainPanelContent.classList.remove('slide-down-now'); >>>>>>> } >>>>>>> }); >>>>>>> headerName.addEventListener(vendor, function() { >>>>>>> headerName.classList.remove('fade-title'); >>>>>>> }); >>>>>>> }); >>>>>>> }; >>>>>>> >>>>>>> >>>>>>> function initializeYay() { >>>>>>> makeGlobalElements(); >>>>>>> setTimeout(attatchListeners, 500); >>>>>>> setUpRoutes(); >>>>>>> removeSplash(); >>>>>>> //fetchPdfjs(); >>>>>>> } >>>>>>> >>>>>>> if (!webComponentsSupported) { >>>>>>> document.addEventListener('WebComponentsReady', initializeYay); >>>>>>> } else { >>>>>>> initializeYay(); >>>>>>> page('/portfolio'); >>>>>>> } >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Tuesday, December 22, 2015 at 9:44:05 PM UTC-6, Darin Hensley >>>>>>> wrote: >>>>>>>> >>>>>>>> stack overflow post >>>>>>>> <http://stackoverflow.com/questions/34428255/domcontentloaded-never-fires-can-not-use-webcomponentsready> >>>>>>>> >>>>>>>> >>>>>>>> Using polymer 1.2.3, >>>>>>>> >>>>>>>> >>>>>>>> In linux firefox 42.0, where the polyfill(webcomponents-lite.js) is >>>>>>>> used: >>>>>>>> >>>>>>>> >>>>>>>> `WebComponentsReady` fires to soon, because I `querySelect` and >>>>>>>> `getElementById` elements that do not exist yet in `initialize`. >>>>>>>> >>>>>>>> >>>>>>>> window.addEventListener('WebComponentsReady', function() { >>>>>>>> initialize >>>>>>>> .then(attatchListeners) >>>>>>>> >>>>>>>> >>>>>>>> So I am using `DOMContentLoaded` but it never fires: >>>>>>>> >>>>>>>> document.addEventListener('DOMContentLoaded', function() { >>>>>>>> initialize >>>>>>>> .then(attatchListeners) >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Any ideas on how to make initialize run when the elements are >>>>>>>> available for `querySelect()`? >>>>>>>> >>>>>>>> Follow Polymer on Google+: plus.google.com/107187849809354688692 >>>>>>> --- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "Polymer" group. >>>>>>> >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to [email protected]. >>>>>> >>>>>> >>>>>>> To view this discussion on the web visit >>>>>>> https://groups.google.com/d/msgid/polymer-dev/13dcb312-f0a9-44d5-bf55-29be4cd38441%40googlegroups.com >>>>>>> <https://groups.google.com/d/msgid/polymer-dev/13dcb312-f0a9-44d5-bf55-29be4cd38441%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>> . >>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>> >>>>>> Follow Polymer on Google+: plus.google.com/107187849809354688692 >>>>> --- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Polymer" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to [email protected]. >>>>> >>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/polymer-dev/ecbf652f-4130-4118-8a29-30de8c98ff24%40googlegroups.com >>>>> <https://groups.google.com/d/msgid/polymer-dev/ecbf652f-4130-4118-8a29-30de8c98ff24%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> Follow Polymer on Google+: plus.google.com/107187849809354688692 >>> --- >>> You received this message because you are subscribed to the Google >>> Groups "Polymer" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> >> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/polymer-dev/25ca6f26-e689-4829-9dbd-5a87c2c129dc%40googlegroups.com >>> <https://groups.google.com/d/msgid/polymer-dev/25ca6f26-e689-4829-9dbd-5a87c2c129dc%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> For more options, visit https://groups.google.com/d/optout. >>> >> Follow Polymer on Google+: plus.google.com/107187849809354688692 > --- > You received this message because you are subscribed to the Google Groups > "Polymer" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/polymer-dev/144ec899-6d1d-4d8b-93f3-b9485115aaf0%40googlegroups.com > <https://groups.google.com/d/msgid/polymer-dev/144ec899-6d1d-4d8b-93f3-b9485115aaf0%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > Follow Polymer on Google+: plus.google.com/107187849809354688692 --- You received this message because you are subscribed to the Google Groups "Polymer" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/polymer-dev/CAMZCrPjgLsf15%2Bzz508EsWn0QPNqpzTS7tTSwWbMO5Xm3Ve4xA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
