Match-id-bb9faf6ae4ba719bc43b183906c421855724b0b7
This commit is contained in:
parent
f3c0cf9a05
commit
8c13846d2d
|
@ -19,14 +19,15 @@ import {callRenderQueueImmediate} from '../renderer/taskExecutor/RenderQueue';
|
||||||
import {runAsyncEffects} from '../renderer/submit/HookEffectHandler';
|
import {runAsyncEffects} from '../renderer/submit/HookEffectHandler';
|
||||||
import {isPromise} from '../renderer/ErrorHandler';
|
import {isPromise} from '../renderer/ErrorHandler';
|
||||||
|
|
||||||
|
interface Thenable {
|
||||||
|
then(resolve: (val?: any) => void, reject: (err: any) => void): void;
|
||||||
|
}
|
||||||
|
|
||||||
// act用于测试,作用是:如果fun触发了刷新(包含了异步刷新),可以保证在act后面的代码是在刷新完成后才执行。
|
// act用于测试,作用是:如果fun触发了刷新(包含了异步刷新),可以保证在act后面的代码是在刷新完成后才执行。
|
||||||
function act(fun) {
|
function act(fun: () => void | Thenable): Thenable {
|
||||||
const funRet = asyncUpdates(fun);
|
const funRet = asyncUpdates(fun);
|
||||||
|
|
||||||
callRenderQueueImmediate();
|
callRenderQueue();
|
||||||
runAsyncEffects();
|
|
||||||
// effects可能产生刷新任务,这里再执行一次
|
|
||||||
callRenderQueueImmediate();
|
|
||||||
|
|
||||||
// 如果fun返回的是Promise
|
// 如果fun返回的是Promise
|
||||||
if (isPromise(funRet)) {
|
if (isPromise(funRet)) {
|
||||||
|
@ -38,13 +39,11 @@ function act(fun) {
|
||||||
if (typeof setImmediate === 'function') {
|
if (typeof setImmediate === 'function') {
|
||||||
// 通过setImmediate回调,用于等待业务的setTimeout完成
|
// 通过setImmediate回调,用于等待业务的setTimeout完成
|
||||||
setImmediate(() => {
|
setImmediate(() => {
|
||||||
callRenderQueueImmediate();
|
callRenderQueue();
|
||||||
runAsyncEffects();
|
|
||||||
resolve();
|
resolve();
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
callRenderQueueImmediate();
|
callRenderQueue();
|
||||||
runAsyncEffects();
|
|
||||||
resolve();
|
resolve();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -61,9 +60,15 @@ function act(fun) {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function callRenderQueue() {
|
||||||
|
callRenderQueueImmediate();
|
||||||
|
runAsyncEffects();
|
||||||
|
// effects可能产生刷新任务,这里再执行一次
|
||||||
|
callRenderQueueImmediate();
|
||||||
}
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
act
|
act
|
||||||
}
|
};
|
||||||
|
|
Loading…
Reference in New Issue