mirror of
https://github.com/zoriya/react-native-web.git
synced 2026-06-02 10:35:54 +00:00
[fix] InteractionManager improvements
This commit is contained in:
@@ -9,6 +9,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import invariant from 'fbjs/lib/invariant';
|
import invariant from 'fbjs/lib/invariant';
|
||||||
|
import requestIdleCallback, { cancelIdleCallback } from '../../modules/requestIdleCallback';
|
||||||
|
|
||||||
const InteractionManager = {
|
const InteractionManager = {
|
||||||
Events: {
|
Events: {
|
||||||
@@ -20,16 +21,21 @@ const InteractionManager = {
|
|||||||
* Schedule a function to run after all interactions have completed.
|
* Schedule a function to run after all interactions have completed.
|
||||||
*/
|
*/
|
||||||
runAfterInteractions(task: ?Function): { then: Function, done: Function, cancel: Function } {
|
runAfterInteractions(task: ?Function): { then: Function, done: Function, cancel: Function } {
|
||||||
console.warn('InteractionManager is not supported on web');
|
let handle;
|
||||||
|
|
||||||
const promise = new Promise(resolve => {
|
const promise = new Promise(resolve => {
|
||||||
if (task) {
|
handle = requestIdleCallback(() => {
|
||||||
resolve(task());
|
if (task) {
|
||||||
}
|
resolve(task());
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
return {
|
return {
|
||||||
then: promise.then.bind(promise),
|
then: promise.then.bind(promise),
|
||||||
done: () => {},
|
done: promise.then.bind(promise),
|
||||||
cancel: () => {}
|
cancel: () => {
|
||||||
|
cancelIdleCallback(handle);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
import { canUseDOM } from 'fbjs/lib/ExecutionEnvironment';
|
import { canUseDOM } from 'fbjs/lib/ExecutionEnvironment';
|
||||||
|
|
||||||
const _requestIdleCallback = function(cb: Function, options: Object) {
|
const _requestIdleCallback = function(cb: Function, options?: Object) {
|
||||||
return setTimeout(() => {
|
return setTimeout(() => {
|
||||||
const start = Date.now();
|
const start = Date.now();
|
||||||
cb({
|
cb({
|
||||||
|
|||||||
Reference in New Issue
Block a user