50 lines
1.2 KiB
JavaScript
50 lines
1.2 KiB
JavaScript
|
|
onmessage = function (event) {
|
||
|
|
handleMessage(event.data);
|
||
|
|
}
|
||
|
|
|
||
|
|
// message = {type: '', task_id: '', [key: string]: any}
|
||
|
|
function handleMessage(message) {
|
||
|
|
// console.log("new task from master " + JSON.stringify(message));
|
||
|
|
let type = message['type'];
|
||
|
|
|
||
|
|
if(type === 'fetch'){
|
||
|
|
fetchUrl(message.url).then(function (res) {
|
||
|
|
postMessage({
|
||
|
|
type: 'fetch',
|
||
|
|
task_id: message.task_id,
|
||
|
|
info: JSON.parse(res),
|
||
|
|
})
|
||
|
|
});
|
||
|
|
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function processDelay(timeout) {
|
||
|
|
setTimeout(function () {
|
||
|
|
postMessage({
|
||
|
|
type: 'delay',
|
||
|
|
info: 'Its done! ' + timeout,
|
||
|
|
})
|
||
|
|
}, timeout)
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
function fetchUrl(request_url) {
|
||
|
|
return new Promise(function (resolve, reject) {
|
||
|
|
let xhr = new XMLHttpRequest();
|
||
|
|
xhr.open('GET', request_url, true);
|
||
|
|
xhr.onload = function () {
|
||
|
|
if (xhr.status >= 200 && xhr.status < 300) {
|
||
|
|
resolve(xhr.response);
|
||
|
|
} else {
|
||
|
|
reject('error');
|
||
|
|
}
|
||
|
|
};
|
||
|
|
xhr.onerror = function () {
|
||
|
|
reject('error');
|
||
|
|
};
|
||
|
|
xhr.send();
|
||
|
|
});
|
||
|
|
}
|