js doc and code optimize
This commit is contained in:
		| @ -1,5 +1,10 @@ | ||||
| // function extract(itemsSelector, fieldSelectors, url, from, to, interval) | ||||
| // function extract(itemsSelector, fieldSelectors, url, pages) | ||||
| /** | ||||
|  * Extract data from current tab / multiple urls. | ||||
|  * @param {string} itemsSelector items selectors for selecting items (data rows) | ||||
|  * @param {Array<string>} fieldSelectors fields selectors for selecting fields (data columns) under each item | ||||
|  * @param {string} url url template to generate urls by filling with page numers. | ||||
|  * @param {...number} args page numers, either [from, to, interval] or [...pages] | ||||
|  */ | ||||
| function extract(itemsSelector, fieldSelectors, url, ...args) { | ||||
|     let urls = []; | ||||
|     if (url) { | ||||
| @ -65,6 +70,13 @@ function redirectTab(tab, url) { | ||||
|         .then(() => reportIn(tab)); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * extract data in from the target tab, usually used to detect if the content script is ready. | ||||
|  * @param {any} tab target tab | ||||
|  * @param {string} itemsSelector items selectors for selecting items (data rows) | ||||
|  * @param {Array<string>} fieldSelectors fields selectors for selecting fields (data columns) under each item | ||||
|  * @returns {Promise<string[]>} a promise of extracted data | ||||
|  */ | ||||
| function extractData(tab, itemsSelector, fieldSelectors) { | ||||
|     let req = { | ||||
|         from: "DataExtracter:Extract", | ||||
| @ -76,6 +88,11 @@ function extractData(tab, itemsSelector, fieldSelectors) { | ||||
|     return sendMessageAndDetect(tab, req, cond, failMsg); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * get report in from the target tab, usually used to detect if the content script is ready. | ||||
|  * @param {any} tab target tab | ||||
|  * @returns {Promise<string>} a promise of the report in message | ||||
|  */ | ||||
| function reportIn(tab) { | ||||
|     let req = { | ||||
|         from: "DataExtracter:ReportIn" | ||||
| @ -85,6 +102,12 @@ function reportIn(tab) { | ||||
|     return sendMessageAndDetect(tab, req, cond, failMsg); | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * get the url of the target tab | ||||
|  * @param {any} tab target tab | ||||
|  * @param {string} urlExcluded if specified, queryUrl resolves only when response not equals to urlExcluded | ||||
|  * @returns {Promise<string>} a promise of the url | ||||
|  */ | ||||
| function queryUrl(tab, urlExcluded) { | ||||
|     let req = { | ||||
|         from: "DataExtracter:QueryUrl" | ||||
| @ -96,13 +119,13 @@ function queryUrl(tab, urlExcluded) { | ||||
|  | ||||
| /** | ||||
|  * Repeatedly sending a message to target tab until the response is detected good. | ||||
|  * The response is returned with the Promise. | ||||
|  * @param {chrome.tab} tab the table where to send the message | ||||
|  * @param {object} tab the table where to send the message | ||||
|  * @param {object} req the request data. | ||||
|  * @param {function} cond success condition function, r:any=>boolean | ||||
|  * @param {string} failMsg message when failed after time out | ||||
|  * @param {number} failedTimeOut fail time out | ||||
|  * @param {number} detectInterval interval for detecting | ||||
|  * @return {Promise} a promise of the response. | ||||
|  */ | ||||
| function sendMessageAndDetect(tab, req, cond, failMsg, failedTimeOut, detectInterval) { | ||||
|     failedTimeOut = failedTimeOut || 10000; | ||||
|  | ||||
		Reference in New Issue
	
	Block a user