mirror of
https://github.com/zhigang1992/react-native-web.git
synced 2026-03-27 22:55:56 +08:00
[fix] InteractionManager improvements
This commit is contained in:
@@ -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);
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
|
||||
@@ -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({
|
||||
|
||||
Reference in New Issue
Block a user