Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 邮袋查询正在阻止dom_Javascript_Node.js_Node Webkit_Web Audio Api_Pouchdb - Fatal编程技术网

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的同步行为造成的