Skip to content

Commit 576dda3

Browse files
committed
We're going back to microtasks (via Promise#then) for async! Fixes preactjs#708. Fixes preactjs/preact-compat#376.
1 parent 92f65df commit 576dda3

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

src/render-queue.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import options from './options';
2+
import { defer } from './util';
23
import { renderComponent } from './vdom/component';
34

45
/** Managed queue of dirty components to be re-rendered */
@@ -7,11 +8,10 @@ let items = [];
78

89
export function enqueueRender(component) {
910
if (!component._dirty && (component._dirty = true) && items.push(component)==1) {
10-
(options.debounceRendering || setTimeout)(rerender);
11+
(options.debounceRendering || defer)(rerender);
1112
}
1213
}
1314

14-
1515
export function rerender() {
1616
let p, list = items;
1717
items = [];

src/util.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,7 @@ export function extend(obj, props) {
77
return obj;
88
}
99

10-
10+
/** Call a function asynchronously, as soon as possible.
11+
* @param {Function} callback
12+
*/
13+
export const defer = typeof Promise=='function' ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;

0 commit comments

Comments
 (0)