我想在加载后立即向网络工作者发出一些信息。代码看起来像:
var w = new Worker("worker.js");
w.onmessage = function (ev) {
console.log(ev.data);
};
w.postMessage("Hello World");
在worker.js中,我有:
this.onmessage = function (ev) {
self.postMessage(ev.data);
}
所以,事件流是这样的:
窗口--Hello World-> web worker - Hell
我正在做一个需要大量计算的网络项目,我使用一个网络工作者来完成这个工作。网页上还有一个按钮,当用户单击该按钮时,该按钮将终止员工的计算。然而,当我在web工作者内部编写了一个没完没了的循环进行测试时,网页就卡住了,我无法与它交互。
//When the worker is created
worker = new Worker("./scripts/testWorker.js");
//When the button is clicked
worker.terminate();
worker = undefined;
如何解决这个问题?或者还有其他方法来达到执行可破坏
我测试代码
///create the web server
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
///
function compute() {
var x = 1111111112;
while (x > 0) x--;//about 6 seconds
setImmediate(compute)
变量范围的规则是否与node.js中的常规“线性”javascript相同?
我正在使用来自某些请求的数据进行几次db调用,以下内容将在app.get或app.post函数调用中进行:
var data = req.body.data;
----> db SELECT * FROM some table WHERE some value = data;
-----> db callback declares var resultdata = result.data
----> db SEL
JavaScript是一种单线程编程语言(可同时执行一项任务)
因此,它首先运行主线程(同步),然后在事件循环中执行异步任务(这是我所理解的,但显然我错了)
Node.js使用libuv,一个处理异步任务的库。
// synchronously open file descriptor
var fd = fs.openSync('testFile', 'r+');
// synchronously write data to the file
fs.writeSync(fd, ' first data part ');
// asynch