mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Allow incremental payloads from Native->JS (#39109)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/39109 Changelog: [Internal][Added] - Allowed metro to also receive incremental data payloads from the native side bit by bit, offloading memory to the JS side (which would have been used anyways when the final copy was done). Reviewed By: motiz88 Differential Revision: D48449495 fbshipit-source-id: 8cb2b43c35cce28e4b82d3f0e993c0f6d5f9c008
This commit is contained in:
committed by
Facebook GitHub Bot
parent
f4f6c58172
commit
08f0cda867
@@ -29,6 +29,7 @@ function asyncRequest(
|
||||
let dataListener;
|
||||
let completeListener;
|
||||
let responseListener;
|
||||
let incrementalDataListener;
|
||||
return new Promise<{body: string, headers: {[string]: string}}>(
|
||||
(resolve, reject) => {
|
||||
dataListener = Networking.addListener(
|
||||
@@ -39,6 +40,18 @@ function asyncRequest(
|
||||
}
|
||||
},
|
||||
);
|
||||
incrementalDataListener = Networking.addListener(
|
||||
'didReceiveNetworkIncrementalData',
|
||||
([requestId, data]) => {
|
||||
if (requestId === id) {
|
||||
if (responseText != null) {
|
||||
responseText += data;
|
||||
} else {
|
||||
responseText = data;
|
||||
}
|
||||
}
|
||||
},
|
||||
);
|
||||
responseListener = Networking.addListener(
|
||||
'didReceiveNetworkResponse',
|
||||
([requestId, status, responseHeaders]) => {
|
||||
@@ -67,7 +80,7 @@ function asyncRequest(
|
||||
{},
|
||||
'',
|
||||
'text',
|
||||
false,
|
||||
true,
|
||||
0,
|
||||
requestId => {
|
||||
id = requestId;
|
||||
@@ -76,9 +89,10 @@ function asyncRequest(
|
||||
);
|
||||
},
|
||||
).finally(() => {
|
||||
dataListener && dataListener.remove();
|
||||
completeListener && completeListener.remove();
|
||||
responseListener && responseListener.remove();
|
||||
dataListener?.remove();
|
||||
completeListener?.remove();
|
||||
responseListener?.remove();
|
||||
incrementalDataListener?.remove();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -91,7 +105,6 @@ function buildUrlForBundle(bundlePathAndQuery: string) {
|
||||
|
||||
module.exports = function (bundlePathAndQuery: string): Promise<void> {
|
||||
const requestUrl = buildUrlForBundle(bundlePathAndQuery);
|
||||
|
||||
let loadPromise = cachedPromisesByUrl.get(requestUrl);
|
||||
|
||||
if (loadPromise) {
|
||||
|
||||
Reference in New Issue
Block a user