Re: order of AudioWorkletGlobalScope script application

So there are two things here:

1) import() calls aren't ordered, for example:

worklet.import('script1.js');
worklet.import('script2.js');

valid execution orders are: [1,2] and [2,1].

If you want a specific ordering at this level you'll need to promise chain,
i.e.

await worklet.import('script1.js');
await worklet.import('script2.js');

2) Once things are loaded from the network, and you create a new
WorkletGlobalScope, the order is defined. Taking the above example, if the
order was [script2, script1]; and a new WorkeltGlobalScope was created, the
scripts will get executed in the same order.

Scripts are loaded as modules, so most dependencies will be loaded with the
import syntax.
E.g.
import { thing } from 'dep.js';

Again the order in which es6-imports are executed is defined by that
ordered response map. So when you create a new WorkletGlobalScope, the
scripts will be executed in the same order.

Thanks,
Ian

On Thu, Sep 29, 2016 at 2:50 PM, Joe Berkovitz <joe@noteflight.com> wrote:

> I was unclear on the ordering, but the Worklet spec does mention that if
> you import two scripts, the order of loading is indeterminate.
>
> This fetch vs. parse sequencing thing is the main point I was hoping Ian
> could clear up for us.
>
> .            .       .    .  . ...Joe
>
> Joe Berkovitz
> President
> Noteflight LLC
>
> +1 978 314 6271 <(978)%20314-6271>
>
> 49R Day Street
> Somerville MA 02144
> USA
>
> "Bring music to life"
> www.noteflight.com
>
> On Thu, Sep 29, 2016 at 4:45 PM, Hongchan Choi <hongchan@google.com>
> wrote:
>
>> Since this is already specced in the worklet spec, I don't think we need
>> to redefine our own storage for this purpose. We can simply use this notion
>> and add a link to the worklet spec.
>>
>> Also it seems like this follows the order of 'fetching', not parsing. Is
>> this what we want? Can we import multiple files concurrently?
>>
>> On Thu, Sep 29, 2016 at 7:32 AM Joe Berkovitz <joe@noteflight.com> wrote:
>>
>>> Hi Ian,
>>>
>>> A question came up yesterday in conversation, about the order in which
>>> imported scripts are applied to a WorkletGlobalScope. I realized that we'd
>>> never discussed this in the WG, and that it would be desirable to apply
>>> scripts to every global scope in a consistent order. My guess was that this
>>> order should be the order in which Promises returned from various
>>> importScript() calls are resolved, and that a given Worklet would need to
>>> maintain some kind of internal list that captured the scripts' parse
>>> results this order.
>>>
>>> On perusing the Worklet spec more carefully, I found this:
>>>
>>>     https://drafts.css-houdini.org/worklets/#module-responses-map
>>>
>>> Is the "module responses map" the very thing I was thinking about?
>>>
>>> Thanks for your help!
>>>
>>> Best,
>>>
>>> .            .       .    .  . ...Joe
>>>
>>>
>

Received on Friday, 30 September 2016 15:33:03 UTC