由于nativescript webworkers仍处于起步阶段 - 这意味着我们无法访问本机API(这是一个非常划分的交易平台),因此尝试手动创建一个新的线程来放置我的套接字。代码编译成功,并运行。
console.log(newThread)
说,我在Thread[Thread-5,5,main]
帖子中,我觉得这很好。
但是,当我检查新线程本身的线程时,它会显示CURRENT THREAD: MAIN THREAD - Thread[main,5,main]
。有什么想法吗?
var newThread = new java.lang.Thread(
new java.lang.Runnable({
run: function(){
console.log("Running this code in new thread!");
if( java.lang.Thread.currentThread() == android.os.Looper.getMainLooper().getThread() ) {
// Current Thread is Main Thread.
console.log("CURRENT THREAD: MAIN THREAD - ", java.lang.Thread.currentThread());
} else {
console.log("CURRENT THREAD: NOT MAIN THREAD - ", java.lang.Thread.currentThread());
}
}
})
);
console.log(newThread);
newThread.start();
答案 0 :(得分:2)
我相信你被误导了 - 从v2.4开始,NativeScript已经拥有完整的webworker支持,每个工作人员都可以完全访问整个API。因此,您可以完美地从WebWorkers访问整个Native api; Web工作者拥有的唯一限制是Android和iOS已经拥有的标准限制 - 即您不从单独的线程访问UI元素,所有UI工作必须在主线程上完成。除此之外,天空是极限。请注意WebWorkers确实启动了一个全新的v8实例,因为它们在新线程中运行隔离的JS代码;所以他们比直接的Android或iOS线程使用更多的内存。但它们是跨平台的。
现在,如果您指的是NativeScript-webworkers插件,那么该插件(我是作者)是在添加官方Web工作者支持之前写的;是的,插件无法访问任何API的东西。这是一种权宜之计,可以增加一些执行线程工作的能力。