@blackglory/wait-for
Version:
A module for waiting for things to happen.
21 lines (19 loc) • 587 B
text/typescript
import { fromEvent, map, filter, firstValueFrom } from 'rxjs'
/**
* waitForLoad的边缘情况替代品:
* 如果页面载入被用户代理取消, 就不会触发window的load事件.
*/
export function waitForComplete(): Promise<void> {
return new Promise((resolve, reject) => {
if (document.readyState === 'complete') {
resolve()
} else {
firstValueFrom(
fromEvent(document, 'readystatechange').pipe(
map(() => document.readyState)
, filter(state => state === 'complete')
)
).then(() => resolve(), reject)
}
})
}