Добавил блокировку при загрузке книг, теперь загружаются последовательно
This commit is contained in:
@@ -201,6 +201,7 @@ import miscApi from '../../api/misc';
|
||||
|
||||
import {versionHistory} from './versionHistory';
|
||||
import * as utils from '../../share/utils';
|
||||
import LockQueue from '../../share/LockQueue';
|
||||
|
||||
const componentOptions = {
|
||||
components: {
|
||||
@@ -313,6 +314,8 @@ class Reader {
|
||||
this.reader = this.$store.state.reader;
|
||||
this.config = this.$store.state.config;
|
||||
|
||||
this.lock = new LockQueue(100);
|
||||
|
||||
this.$root.addEventHook('key', this.keyHook);
|
||||
|
||||
this.lastActivePage = false;
|
||||
@@ -1051,7 +1054,7 @@ class Reader {
|
||||
return result;
|
||||
}
|
||||
|
||||
async loadBook(opts) {
|
||||
async _loadBook(opts) {
|
||||
if (!opts || !opts.url) {
|
||||
this.mostRecentBook();
|
||||
return;
|
||||
@@ -1061,10 +1064,6 @@ class Reader {
|
||||
|
||||
let url = encodeURI(decodeURI(opts.url));
|
||||
|
||||
//TODO: убрать конвертирование 'file://' после 06.2021
|
||||
if (url.length == 71 && url.indexOf('file://') == 0)
|
||||
url = url.replace(/^file/, 'disk');
|
||||
|
||||
if ((url.indexOf('http://') != 0) && (url.indexOf('https://') != 0) &&
|
||||
(url.indexOf('disk://') != 0))
|
||||
url = 'http://' + url;
|
||||
@@ -1189,7 +1188,16 @@ class Reader {
|
||||
}
|
||||
}
|
||||
|
||||
async loadFile(opts) {
|
||||
async loadBook(opts) {
|
||||
await this.lock.get();
|
||||
try {
|
||||
await this._loadBook(opts);
|
||||
} finally {
|
||||
this.lock.ret();
|
||||
}
|
||||
}
|
||||
|
||||
async _loadFile(opts) {
|
||||
this.progressActive = true;
|
||||
|
||||
await this.$nextTick();
|
||||
@@ -1213,6 +1221,15 @@ class Reader {
|
||||
}
|
||||
}
|
||||
|
||||
async loadFile(opts) {
|
||||
await this.lock.get();
|
||||
try {
|
||||
await this._loadFile(opts);
|
||||
} finally {
|
||||
this.lock.ret();
|
||||
}
|
||||
}
|
||||
|
||||
blinkCachedLoadMessage() {
|
||||
if (!this.blinkCachedLoad)
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user