add timeout for messaging
This commit is contained in:
@ -21,12 +21,14 @@ export type ResponseChecker<T> = ResponseCheckerSync<T> | ResponseCheckerAsync<T
|
||||
*/
|
||||
export function sendMessage<T>(
|
||||
tab: chrome.tabs.Tab,
|
||||
req,
|
||||
req: Request,
|
||||
log?: string,
|
||||
dataChecker?: ResponseChecker<T>,
|
||||
timeout?: number,
|
||||
interval?: number,
|
||||
limit?: number
|
||||
) {
|
||||
timeout = timeout || 10;
|
||||
interval = interval || 500;
|
||||
limit = isNaN(limit) ? 0 : limit;
|
||||
let count = 0;
|
||||
@ -47,7 +49,9 @@ export function sendMessage<T>(
|
||||
return;
|
||||
}
|
||||
count++;
|
||||
let timeout = setTimeout(() => { reject(`${Actions[req.action]} requset timeout after ${timeout}s`) }, 10000);
|
||||
chrome.tabs.sendMessage(tab.id, req, async (r: Response<T>) => {
|
||||
clearTimeout(timeout);
|
||||
// check error but do nothing until dataChecker.
|
||||
let err = chrome.runtime.lastError;
|
||||
let [result, error] = await checkResponse(dataChecker, r, err, count);
|
||||
|
||||
Reference in New Issue
Block a user