diff --git a/packages/react-native-web/src/exports/Image/index.js b/packages/react-native-web/src/exports/Image/index.js index 3a198106..42d786b2 100644 --- a/packages/react-native-web/src/exports/Image/index.js +++ b/packages/react-native-web/src/exports/Image/index.js @@ -87,6 +87,9 @@ type State = { shouldDisplaySource: boolean }; +const getAssetTimeout = source => + typeof source === 'object' && source.timeout ? source.timeout : 1000; + class Image extends Component<*, State> { static displayName = 'Image'; @@ -246,12 +249,16 @@ class Image extends Component<*, State> { } _createImageLoader() { + const { source } = this.props; this._destroyImageLoader(); - this._loadRequest = requestIdleCallback(() => { - const uri = resolveAssetSource(this.props.source); - this._imageRequestId = ImageLoader.load(uri, this._onLoad, this._onError); - this._onLoadStart(); - }); + this._loadRequest = requestIdleCallback( + () => { + const uri = resolveAssetSource(source); + this._imageRequestId = ImageLoader.load(uri, this._onLoad, this._onError); + this._onLoadStart(); + }, + { timeout: getAssetTimeout(source) } + ); } _destroyImageLoader() { diff --git a/packages/react-native-web/src/modules/requestIdleCallback/index.js b/packages/react-native-web/src/modules/requestIdleCallback/index.js index f561e354..f1c170f7 100644 --- a/packages/react-native-web/src/modules/requestIdleCallback/index.js +++ b/packages/react-native-web/src/modules/requestIdleCallback/index.js @@ -10,7 +10,7 @@ import { canUseDOM } from 'fbjs/lib/ExecutionEnvironment'; -const _requestIdleCallback = function(cb: Function) { +const _requestIdleCallback = function(cb: Function, options: Object) { return setTimeout(() => { const start = Date.now(); cb({