Не опухнет ли web worker от JSONP?

Web Worker получает объёмные данные из API.
Запросы приходится делать JSONP, через importScripts()
Данные получил, отправил сообщением и «забыл».

Не будет ли необратимо раздуваться использование таким воркером памяти по мере выполнения запросов?

Может, ссылок на полученный объект позже и не осталось, и GC может там что-то подчистить. Но загруженные «скрипты» никуда не деваются, вроде бы?
  • Вопрос задан
  • 115 просмотров
Решения вопроса 1
kellas
@kellas
веб-разработчик
Чтобы воркер не рос, я в своем проекте создаю для каждого jsonp запроса отдельный воркер и потом убиваю его. Норм работает, там по 3 запроса в секунду к ВК улетает.

function getJSONP (script_url, callback) {
    // Создаём веб-воркер, который импортирует нам скрипт с коллбэком(jsonp)
    const worker = new Worker(window.URL.createObjectURL(new Blob([
      'let cb=function(val){postMessage(val)};' +
      'importScripts(\'' + script_url + '&callback=cb\');'],
    { type: 'text/javascript' }
    )))

    // Слушаем ответ от воркера
    worker.onmessage = (e) => {
      worker.terminate()
      callback(e.data)
    }

    // Убиваем воркер  если долго нет ответа 
    setTimeout(() => { worker.terminate() },10000)
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы