#javascript #web-worker
#javascript #веб-работник
Вопрос:
Я пытаюсь импортировать данные json с помощью web worker importScripts
, возникает следующая ошибка.
Неперехваченная ошибка NetworkError: не удалось выполнить ‘importScripts’ в ‘WorkerGlobalScope’: не удалось загрузить скрипт по адресу (my: URL для получения данных с сервера).
Код веб-рабочего находится здесь. Я могу отправлять основные сообщения из моего потока web worker и основного потока js. Я хочу получить данные jsonp со своего сервера из потока web worker, а затем ответить на основной поток js.
/*web worker js file to fetch json data from server and then return to main javascript thread*/
self.onmessage = function(e)
{
var curr = setInterval(function()
{
var message = e.data;
fetchMyTournament(message);
}, 10000);
}
function fetchMyTournament(userid)
{
self.postMessage('worker saying hi');
var url = "(server URL mapping)?callback=processInfoamp;type=(typeOfArgument)amp;userId=" userid;
importScripts(url);
self.postMessage("After import script");
}
function processInfo(objJSON)
{
self.postMessage("Data returned from the server...: "
JSON.stringify(objJSON));
}
Комментарии:
1. Знаете ли вы, что происходит с этой ошибкой?
Ответ №1:
В моем случае я импортировал PouchDB следующим образом: importScripts("//cdn.jsdelivr.net/pouchdb/5.3.1/pouchdb.min.js");
URL-адрес должен начинаться с правильного http / https. Таким образом, изменение на это решило проблему: importScripts("https://cdn.jsdelivr.net/pouchdb/5.3.1/pouchdb.min.js");
Ответ №2:
Функция importScript() должна быть размещена вне функции. В вашем случае вы должны использовать fetch(url). Вы также должны добавить асинхронность к каждой функции и использовать ее таким образом:
let message = fetchMyTournament(message).then(function(result){return resu<});