refactor(core): core task function

move event loop task to @ccms/micro-task thread

BREAKING CHANGE: setTimeout & setInterval no longer run on main thread

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
2020-11-18 16:32:09 +08:00
parent c5fac44362
commit 4bb2337f39
2 changed files with 46 additions and 18 deletions

View File

@ -1,25 +1,23 @@
let containerStartTime = Date.now()
console.i18n("ms.core.ioc.initialize", { scope: global.scope })
import { plugin, server, task, constants } from '@ccms/api'
import { DefaultContainer as container, inject, provideSingleton, ContainerInstance, buildProviderModule } from '@ccms/container'
import { DefaultContainer as container, inject, provideSingleton, ContainerInstance, buildProviderModule, Autowired } from '@ccms/container'
console.i18n("ms.core.ioc.completed", { scope: global.scope, time: (Date.now() - containerStartTime) / 1000 })
import http from '@ccms/common/dist/http'
@provideSingleton(MiaoScriptCore)
class MiaoScriptCore {
@inject(server.Console)
@Autowired(server.Console)
private Console: Console
@inject(task.TaskManager)
private taskManager: task.TaskManager
@inject(plugin.PluginFolder)
@Autowired(plugin.PluginFolder)
private pluginFolder: string
@inject(plugin.PluginManager)
@Autowired()
private taskManager: task.TaskManager
@Autowired()
private pluginManager: plugin.PluginManager
enable() {
this.loadServerConsole()
this.loadTaskFunction()
global.level = "TRACE"
this.loadPlugins()
return () => this.disable()
}
@ -29,15 +27,6 @@ class MiaoScriptCore {
global.setGlobal('console', new this.Console(), { writable: false, configurable: false })
}
loadTaskFunction() {
global.setGlobal('setTimeout', (func: Function, tick: number, ...args: any[]) => {
return this.taskManager.create(func).later(tick).submit(...args)
}, { writable: false, configurable: false })
global.setGlobal('setInterval', (func: Function, tick: number, ...args: any[]) => {
return this.taskManager.create(func).timer(tick).submit(...args)
}, { writable: false, configurable: false })
}
loadPlugins() {
let loadPluginStartTime = new Date().getTime()
console.i18n("ms.core.plugin.initialize")