コード例 #1
0
        public void RunModule(string script, Func <string, string> loadModuleCallback)
        {
            moduleLoadException = null;
            JavaScriptModuleRecord rootRecord = contextSwitch.With(() =>
            {
                return(createModule(null, null, (name) =>
                {
                    if (string.IsNullOrEmpty(name))
                    {
                        return script;
                    }
                    else
                    {
                        return loadModuleCallback(name);
                    }
                }));
            });

            //startModuleParseQueue();
            moduleReadyEvent.WaitOne();
            throwIfExceptionInLoading();
            contextSwitch.With(() =>
            {
                JavaScriptModuleRecord.RunModule(rootRecord);
            });
        }
コード例 #2
0
        public void RunModule(string script, Func <string, string> loadModuleCallback)
        {
            JavaScriptModuleRecord rootRecord = contextSwitch.With(() =>
            {
                return(createModule(null, null, (name) =>
                {
                    if (string.IsNullOrEmpty(name))
                    {
                        return script;
                    }
                    else
                    {
                        return loadModuleCallback(name);
                    }
                }));
            });

            //startModuleParseQueue();
            moduleReadyEvent.WaitOne();
            contextSwitch.With(() =>
            {
                JavaScriptModuleRecord.RunModule(rootRecord);
                //startModuleParseQueue();//for dynamic import during module run
                //this pattern is not consistent to promise loop pattern, should change it?
            });
        }
コード例 #3
0
        public JavaScriptValue LoadModule(JSFileObject file, string[] modulesToReload = null)
        {
            if (modulesToReload != null)
            {
                //TODO: For now we just reload all. Later on it would be nice to reaload only the changed ones and the ones
                // referencing them

                foreach (var m in moduleCache.Keys.ToList())
                {
                    if (!_predefinedModules.ContainsKey(m))
                    {
                        moduleCache.Remove(m);
                    }
                }
                //foreach (var m in modulesToReload)
                //{
                //    moduleCache.Remove(m);
                //}
            }

            var rootModule = CreateModule(null, file);

            ParseModuleQueue();

            var returnValue = JavaScriptModuleRecord.RunModule(rootModule);

            ParseModuleQueue();

            return(returnValue);
        }
コード例 #4
0
ファイル: ModuleLoader.cs プロジェクト: yuzd/ChakraCore.NET
        public JavaScriptValue LoadModule(string fileName)
        {
            var rootModule = createModule(null, fileName);

            parseModuleQueue();
            //return JavaScriptValue.Invalid;
            var x = JavaScriptModuleRecord.RunModule(rootModule);

            parseModuleQueue();
            return(x);
        }