ReactSuspenseTestUtils.js — react Source File
Architecture documentation for ReactSuspenseTestUtils.js, a javascript file in the react codebase. 2 imports, 0 dependents.
Entity Profile
Dependency Diagram
graph LR 47c09a6f_afe7_253c_6774_4ff500229ed1["ReactSuspenseTestUtils.js"] 42892443_e223_3da0_aeb9_e1b32a408fb0["ReactInternalTypes"] 47c09a6f_afe7_253c_6774_4ff500229ed1 --> 42892443_e223_3da0_aeb9_e1b32a408fb0 1c5695a6_6806_ba54_2074_efc779e66da4["ReactSharedInternals"] 47c09a6f_afe7_253c_6774_4ff500229ed1 --> 1c5695a6_6806_ba54_2074_efc779e66da4 style 47c09a6f_afe7_253c_6774_4ff500229ed1 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
*/
import type {AsyncDispatcher} from 'react-reconciler/src/ReactInternalTypes';
import ReactSharedInternals from 'shared/ReactSharedInternals';
export function waitForSuspense<T>(fn: () => T): Promise<T> {
const cache: Map<Function, mixed> = new Map();
const testDispatcher: AsyncDispatcher = {
getCacheForType<R>(resourceType: () => R): R {
let entry: R | void = (cache.get(resourceType): any);
if (entry === undefined) {
entry = resourceType();
// TODO: Warn if undefined?
cache.set(resourceType, entry);
}
return entry;
},
cacheSignal(): null {
return null;
},
getOwner(): null {
return null;
},
};
// Not using async/await because we don't compile it.
return new Promise((resolve, reject) => {
function retry() {
const prevDispatcher = ReactSharedInternals.A;
ReactSharedInternals.A = testDispatcher;
try {
const result = fn();
resolve(result);
} catch (thrownValue) {
if (typeof thrownValue.then === 'function') {
thrownValue.then(retry, retry);
} else {
reject(thrownValue);
}
} finally {
ReactSharedInternals.A = prevDispatcher;
}
}
retry();
});
}
Dependencies
- ReactInternalTypes
- ReactSharedInternals
Source
Frequently Asked Questions
What does ReactSuspenseTestUtils.js do?
ReactSuspenseTestUtils.js is a source file in the react codebase, written in javascript.
What does ReactSuspenseTestUtils.js depend on?
ReactSuspenseTestUtils.js imports 2 module(s): ReactInternalTypes, ReactSharedInternals.
Where is ReactSuspenseTestUtils.js in the architecture?
ReactSuspenseTestUtils.js is located at packages/react-suspense-test-utils/src/ReactSuspenseTestUtils.js (directory: packages/react-suspense-test-utils/src).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free