【发布时间】:2020-05-29 10:03:06
【问题描述】:
我目前正在从事一个涉及 nativescript-vue 和 typescript 的项目,我必须与 workers 合作(我对 NS 和 worker 不太熟悉)。我已经阅读了文档并尝试了 NS 文档中给出的实现并将其改编为项目,但我似乎无法正确...确实它一开始可以工作,但在调用了几次实例化和管理工作人员,应用程序崩溃而没有错误...我不知道是因为工作人员在完成任务后并没有真正关闭,还是存在问题脚本本身...
这是main.ts的一部分代码
import "tns-core-modules/globals"
export class Main extends Vue {
worker: Worker
onTaskReceived(task){
this.manageWorker(task, this.worker)
}
manageWorker(task: any, worker: Worker){
const NewWorker = require('nativescript-worker-loader!./worker.ts')
worker = new Worker()
worker.postMessage({
type: "task",
value: task
})
worker.onerror = await function (err) {
console.log(`An unhandled error occurred in worker: ${err.filename}, line: ${err.lineno} :`);
console.log(err.message);
worker.terminate()
}
worker.onmessage = function (message) {
console.log('{onmessage}')
worker.terminate()
}
}
}
这是其中一名工人 (worker.ts) 的代码
import "tns-core-modules/globals"
import { error } from "tns-core-modules/trace";
const context: Worker = self as any;
context.onmessage = function(task) {
const request = task.data
console.log('[WORKER]: data from main received')
console.log(request)
# Here is the code that the worker execute when triggered
if (result.state === 'done') {
console.log('[WORKER]: work done - sending data back')
context.postMessage({
type: 'result',
succeed: true,
value: result
})
}
}
context.onerror = function (error) {
console.log('[WORKER]{ERROR} '+error)
}
export default {} as typeof Worker & (new () => Worker)
提前感谢您的帮助:)
【问题讨论】:
-
您可能需要遵循 Ian 的说明,除了尝试使用 Android Studio 中的日志监视器,它可能会为您提供有关崩溃的更多详细信息,共享日志和正确的代码以重现问题。
标签: typescript nativescript web-worker nativescript-vue