Javascript 邮袋查询正在阻止dom
以下是我测试数据库查询的代码: 主文件:Javascript 邮袋查询正在阻止dom,javascript,node.js,node-webkit,web-audio-api,pouchdb,Javascript,Node.js,Node Webkit,Web Audio Api,Pouchdb,以下是我测试数据库查询的代码: 主文件: var myAudio = new Audio("http://www.stephaniequinn.com/Music/Allegro%20from%20Duet%20in%20C% 20Major.mp3"); myAudio.play(); var worker = new Worker('worker.js'); worker.postMessage("start worker"); worker.addEventListener('mes
var myAudio = new Audio("http://www.stephaniequinn.com/Music/Allegro%20from%20Duet%20in%20C% 20Major.mp3");
myAudio.play();
var worker = new Worker('worker.js');
worker.postMessage("start worker");
worker.addEventListener('message', function(e) {
console.log('Worker said: ', e.data);
}, false);
Worker.js:
importScripts("pouchdb-5.2.0.min.js");
self.addEventListener('message', function(e) {
queryDocs();
}, false);
function queryDocs(){
localDB.allDocs({
include_docs: true,
attachments: true
}, function(err, response) {
if (err) { return console.log(err); }
self.postMessage("returned docs:", response);
});
}
步骤:
1.我在node.js应用程序中运行此功能,该应用程序正在播放音频。
2.现在,在播放音频时,我必须查询PockDB。我使用命令“cpulimit-p processId-l 60”将应用程序的所有实例的cpu限制为60%。(用低配置测试它。这样它就可以在低配置的机器上工作而不会出现口吃)
问题:
如果没有使用“cpulimit”命令,那么它工作正常意味着我可以在没有音频口吃的情况下查询PockDB,但是如果我使用命令“cpulimit”限制cpu,那么音频就会口吃
要求:
如何使其在配置较低的计算机上工作而不发生中断?如果DOM在Web Worker中运行,则PockDB无法阻止DOM。但是,主线程主线程中的流式音频可能会导致DOM阻塞。您可以使用Chrome中的时间线视图查看主线程上运行的内容,从而查看阻止DOM的内容
另一个可以阻止DOM的事情是从后台线程向主线程发送大量数据。在上面的查询中,您使用的似乎是
附件:true
,而不是二进制:true
。这意味着PockDB正在提取base64字符串数据,并在postMessage
中通过网络发送数据更有效的选择可能是使用Blob,将其转换为ArrayBuffer(例如使用),然后将其作为一个文件发送。这是由于jquery调用db的同步行为造成的