[fix] InteractionManager improvements

This commit is contained in:
Nicolas Gallagher
2018-04-07 14:22:17 -07:00
parent 45975d3a1e
commit f684a3656e
2 changed files with 13 additions and 7 deletions

View File

@@ -9,6 +9,7 @@
*/
import invariant from 'fbjs/lib/invariant';
import requestIdleCallback, { cancelIdleCallback } from '../../modules/requestIdleCallback';
const InteractionManager = {
Events: {
@@ -20,16 +21,21 @@ const InteractionManager = {
* Schedule a function to run after all interactions have completed.
*/
runAfterInteractions(task: ?Function): { then: Function, done: Function, cancel: Function } {
console.warn('InteractionManager is not supported on web');
let handle;
const promise = new Promise(resolve => {
if (task) {
resolve(task());
}
handle = requestIdleCallback(() => {
if (task) {
resolve(task());
}
});
});
return {
then: promise.then.bind(promise),
done: () => {},
cancel: () => {}
done: promise.then.bind(promise),
cancel: () => {
cancelIdleCallback(handle);
}
};
},

View File

@@ -9,7 +9,7 @@
import { canUseDOM } from 'fbjs/lib/ExecutionEnvironment';
const _requestIdleCallback = function(cb: Function, options: Object) {
const _requestIdleCallback = function(cb: Function, options?: Object) {
return setTimeout(() => {
const start = Date.now();
cb({