Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
fix: 修复useRequest在启动两个以上轮询时,设置页面隐藏停止轮询,页面重新显示时,有请求不自动开始轮询的问题。
  • Loading branch information
JaxonJay committed Dec 5, 2024
commit ced6018d3946408e66789d24f40803bcdf4954eb
14 changes: 4 additions & 10 deletions packages/hooks/src/useRequest/src/utils/subscribeFocus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,25 +5,19 @@ import isOnline from './isOnline';

type Listener = () => void;

const listeners: Listener[] = [];
const listeners = new Set<Listener>();

function subscribe(listener: Listener) {
listeners.push(listener);
listeners.add(listener);
return function unsubscribe() {
const index = listeners.indexOf(listener);
if (index > -1) {
listeners.splice(index, 1);
}
listeners.has(listener) && listeners.delete(listener);
};
}

if (isBrowser) {
const revalidate = () => {
if (!isDocumentVisible() || !isOnline()) return;
for (let i = 0; i < listeners.length; i++) {
const listener = listeners[i];
listener();
}
listeners.forEach((listener) => listener());
};
window.addEventListener('visibilitychange', revalidate, false);
window.addEventListener('focus', revalidate, false);
Expand Down
12 changes: 4 additions & 8 deletions packages/hooks/src/useRequest/src/utils/subscribeReVisible.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,19 @@ import isDocumentVisible from './isDocumentVisible';

type Listener = () => void;

const listeners: Listener[] = [];
const listeners = new Set<Listener>();

function subscribe(listener: Listener) {
listeners.push(listener);
listeners.add(listener);
return function unsubscribe() {
const index = listeners.indexOf(listener);
listeners.splice(index, 1);
listeners.has(listener) && listeners.delete(listener);
};
}

if (isBrowser) {
const revalidate = () => {
if (!isDocumentVisible()) return;
for (let i = 0; i < listeners.length; i++) {
const listener = listeners[i];
listener();
}
listeners.forEach((listener) => listener());
};
window.addEventListener('visibilitychange', revalidate, false);
}
Expand Down