любой выигрыш в производительности от передачи работы в background.js

У меня есть хромированное приложение, которое я сделал с использованием полимерных бумажных элементов. он использует аудиотег HTML5 для потоковой передачи музыки из онлайн-сервиса. Моя проблема заключается в том, что приложение получает результаты с сервера и анализирует массив во время игры. Иногда музыка останавливается на несколько миллисекунд. (несколько секунд на недорогих хромбуках). Я попытался использовать асинхронный метод Polymers, чтобы отложить работу до следующей доступной микрозадачи. Это помогает, но вызывает некоторые нежелательные вещи в интерфейсе. (содержимое, которое не должно отображаться, отображается до тех пор, пока не будет выполнен асинхронный метод)

в настоящее время у меня ничего не происходит в файле background.js. Все происходит в файле main.js или в пользовательском элементе.

увижу ли я какой-либо прирост производительности от использования передачи сообщений для выполнения части работы при анализе ответа на файл background.js?

пример работы, которая, кажется, вызывает паузу в аудио.

        var i = 0;
        Array.prototype.forEach.call(response.albumList2.album, function (e) {
          // buildObject returns the needed data from the object that is returned from the loop as well as other needed data
          var obj = this.buildObject(e);
          // this.wall is the array that i pass to core-list to display
          this.wall.push(obj);
          // this is to keep callback from executing before the array is built
          i = i + 1;
          if (i === response.albumList2.album.length) {
            this.async(callback);
          }
        }.bind(this));

в этой ситуации обратный вызов просто скрывает счетчик загрузки.

Заранее благодарю за любую помощь.


person jimi dough10    schedule 14.05.2015    source источник
comment
Насколько я понимаю, все выполняется в одном и том же потоке пользовательского интерфейса, включая фоновую страницу и асинхронные микрозадачи. Чтобы повысить производительность, вам нужно будет использовать несколько потоков. Я бы рассмотрел Web Workers, но вам, возможно, придется решить те же проблемы, что и с расширениями: stackoverflow.com/questions/22717586/ .   -  person Kevin Coulombe    schedule 15.05.2015
comment
Это и мое понимание. javascript фоновой страницы и страницы переднего плана выполняются в одном потоке. Вам нужно будет использовать веб-воркер.   -  person kzahel    schedule 25.03.2016