Files
callstack__react-native-tes…/src/waitForElement.js
T
Kacper Wiszczuk 480dd28cbc feat: Add Typescript types to waitForElement (#21)
Fix types for Flow too
2018-10-10 21:45:32 +02:00

27 lines
623 B
JavaScript

// @flow
export default function waitForExpect<T: *>(
expectation: () => T,
timeout: number = 4500,
interval: number = 50
): Promise<T> {
const startTime = Date.now();
return new Promise<T>((resolve, reject) => {
const rejectOrRerun = error => {
if (Date.now() - startTime >= timeout) {
reject(error);
return;
}
setTimeout(runExpectation, interval);
};
function runExpectation() {
try {
const result = expectation();
resolve(result);
} catch (error) {
rejectOrRerun(error);
}
}
setTimeout(runExpectation, 0);
});
}