There is not a well-defined order, but there is a partial ordering of
events. The two hard-coded dependencies are these:

deviceready <- (onCordovaReady, DOMContentLoaded) + plugin-defined
dependencies
onCordovaReady <- (onNativeReady, onPluginsReady)

However, because plugins can add themselves to the list of deviceready
dependencies, and they depend on onCordovaReady, in practice the graph
looks like this (the last time I checked, at least):

deviceready <- (DOMContentLoaded, onCordovaInfoReady,
onCordovaConnectionReady)
onCordovaInfoReady <- onCordovaReady
onCordovaConnectionReady <- onCordovaReady
onCordovaReady <- (onNativeReady, onPluginsReady)

This should probably be documented somewhere.


On Wed, Jun 26, 2013 at 12:54 PM, Filip Maj <[email protected]> wrote:

> I agree with Andrew, the order shouldn't be set in stone. WE should
> definitely _list_ the events and explain what each channel should
> represent, but IMO forcing a particular event order is make-work for a lot
> of platforms and offers no real benefit.
>
> On 6/25/13 4:25 PM, "Andrew Grieve" <[email protected]> wrote:
>
> >The order isn't meant to be serially defined. Many platforms fire
> >onNativeReady as the first channel fired. Some do have dependencies
> >though,
> >and you can see them in code by looking for where channel.join() is
> >called.
> >
> >Your options:
> >If you want your code to run as soon as possible, you should put it in
> >your
> >bootstrap.js file.
> >
> >platform.js is another target, but that won't fire until after
> >onPluginsReady
> >
> >onPluginsReady() is meant to be fired once all the plugin file modules are
> >available, but before any plugin modules are require()d. Looks like
> >there's
> >a bug right now in that plugins with <runs/> tags are being run before
> >onPluginsReady() is fired. This will cause their require()s to possible
> >fail and we should fix that.
> >
> >platform.initialize() also waits for onNativeReady. I somewhat doubt that
> >it needs to, but it does.
> >
> >
> >
> >On Tue, Jun 25, 2013 at 7:12 PM, Benn Mapes <[email protected]> wrote:
> >
> >> Not sure if this is doc'ed anywhere, I looked on the wiki but I didn't
> >>see
> >> anything.
> >>
> >> Currently the order of events for page-load/cordova start-up is this (on
> >> windows phone):
> >> 1.) onDOMContentLoaded
> >> 2.) onPluginsReady
> >> 3.) onNativeReady
> >> 4.) onCordovaReady
> >> 5.) onCordovaInfoReady
> >> 6.) deviceready
> >>
> >> After digging though some old mailing lists I found this mention about
> >>the
> >> topic [1].
> >>
> >> For plugins on windows phone we need to patch the browser and inject
> >>some
> >> scripts so that the xhr will run, this is hard to do if onPluginsReady
> >>gets
> >> fired before onNativeReady because we have no way to ensure that the
> >>xhr is
> >> patched before the plugins get loaded.
> >>
> >> What do people think about documenting the order of these events firing
> >>so
> >> that it will be consistent across all platforms, as well as waiting for
> >> onNativeReady to fire before loading the plugins?
> >>
> >>
> >> [1]:
> >>
> >>
> >>
> http://callback.markmail.org/message/bziya43ztqo6oqrs?q=cordova+list:org%
> >>2Eapache%2Eincubator%2Ecallback-dev+order+channel+fire
> >>
>
>

Reply via email to