better task tab management

This commit is contained in:
2018-09-29 14:37:24 +08:00
parent ecd8a0d3d8
commit 7e782c633a
2 changed files with 71 additions and 33 deletions

View File

@ -1,6 +1,7 @@
class Extractor {
constructor() {
this._tasks = [];
this._tab = undefined;
this._results = {};
}
/**
@ -38,12 +39,20 @@ class Extractor {
console.log('No task to run.');
return;
}
let firstTaskArgs = this._tasks[0];
if (firstTaskArgs.length > 2) {
// task specifies target urls, create new tab with first url for it
let urls = parseUrls(...firstTaskArgs.slice(2, firstTaskArgs.length));
this._tab = await createTab(urls[0], false);
} else {
this._tab = await getActiveTab(false);
}
return this._tasks.reduce((pms, args, i, tasks) => {
return pms.then(
result => {
if (result === undefined) return getData(...args);
if (result === undefined) return getData(this._tab, ...args);
this._results[tasks[i - 1]] = result;
return getData(...args, result);
return getData(this._tab, ...args, result);
});
}, Promise.resolve(undefined)).then(
result => {
@ -68,11 +77,12 @@ class Extractor {
console.log(`No result cache for task (id ${taskid}). \nMake sure call ".start()" before ".restart()"?`);
return;
}
this._tab = await createTab(parseUrls(cache)[0], false)
return this._tasks.slice(taskid - 1).reduce((pms, args, i, tasks) => {
return pms.then(
result => {
this._results[tasks[i - 1]] = result;
return getData(...args, result);
return getData(this._tab, ...args, result);
});
}, Promise.resolve(cache)).then(
result => {