Рефакторинг

This commit is contained in:
Book Pauk
2020-01-15 16:20:46 +07:00
parent f814c42fdd
commit 4ab0c337f1

View File

@@ -9,22 +9,14 @@ const workerApi = axios.create({
}); });
class Reader { class Reader {
async loadBook(opts, callback) {
async getStateFinish(workerId, callback) {
if (!callback) callback = () => {}; if (!callback) callback = () => {};
let response = await api.post('/load-book', opts);
const workerId = response.data.workerId;
if (!workerId)
throw new Error('Неверный ответ api');
callback({totalSteps: 4});
callback(response.data);
//присылается текст, состоящий из json-объектов state каждые 300ms, с разделителем splitter между ними //присылается текст, состоящий из json-объектов state каждые 300ms, с разделителем splitter между ними
const splitter = '-- aod2t5hDXU32bUFyqlFE next status --'; const splitter = '-- aod2t5hDXU32bUFyqlFE next status --';
let lastIndex = 0; let lastIndex = 0;
response = await workerApi.post('/get-state-finish', {workerId}, { let response = await workerApi.post('/get-state-finish', {workerId}, {
onDownloadProgress: progress => { onDownloadProgress: progress => {
//небольая оптимизация, вместо простого responseText.split //небольая оптимизация, вместо простого responseText.split
const xhr = progress.target; const xhr = progress.target;
@@ -57,6 +49,23 @@ class Reader {
} }
} }
return response;
}
async loadBook(opts, callback) {
if (!callback) callback = () => {};
let response = await api.post('/load-book', opts);
const workerId = response.data.workerId;
if (!workerId)
throw new Error('Неверный ответ api');
callback({totalSteps: 4});
callback(response.data);
response = await this.getStateFinish(workerId, callback);
if (response) { if (response) {
if (response.state == 'finish') {//воркер закончил работу, можно скачивать кешированный на сервере файл if (response.state == 'finish') {//воркер закончил работу, можно скачивать кешированный на сервере файл
callback({step: 4}); callback({step: 4});
@@ -83,7 +92,7 @@ class Reader {
} }
async loadCachedBook(url, callback) { async loadCachedBook(url, callback) {
const response = await axios.head(url); const response = await axios.head(url, {headers: {'Cache-Control': 'no-cache'}});
let estSize = 1000000; let estSize = 1000000;
if (response.headers['content-length']) { if (response.headers['content-length']) {