@@ -11,7 +11,7 @@ Loro 内置事件系统用于追踪文档变化。本节介绍事件的触发时
1111 - 显式调用 ` LoroDoc.commit() `
1212 - 在导入或导出前自动提交
1313
14- 事件会在微任务结束后异步触发。如果需要在提交后立即处理事件,请等待一个微任务 :
14+ 自 ` loro-crdt@1.8.0 ` 起,事件会在提交周期内同步触发;如果你仍使用 < =1.7.x,则需要等待一个微任务才能看到回调 :
1515
1616```ts no_run twoslash
1717import { LoroDoc } from " loro-crdt" ;
@@ -24,12 +24,11 @@ doc.subscribe((event) => {
2424const text = doc.getText("text");
2525text.insert(0, " Hello" );
2626doc.commit();
27- // 事件尚未触发
28- await Promise .resolve ();
29- // 事件现已触发
27+ // v1.8+ 已同步触发事件
28+ // await Promise.resolve(); // 仅在 <=1.7.x 仍需等待
3029```
3130
32- 3 . ** 导入** :调用 ` import() ` 导入远端更新时,会触发对应事件,便于本地响应其他节点的变更:
31+ 3. **导入**:调用 `import()` 导入远端更新时,会触发对应事件,便于本地响应其他节点的变更;在 v1.8+ 中会立即触发。
3332
3433```ts no_run twoslash
3534import { LoroDoc } from " loro-crdt" ;
@@ -40,19 +39,19 @@ doc.subscribe((event) => {
4039 console .log (" Event:" , event );
4140} );
4241
43- doc .import (remoteChanges ); // 微任务后触发事件
44- await Promise .resolve ();
42+ doc.import(remoteChanges); // v1.8+ 会立即触发事件
43+ // await Promise.resolve(); // 仅在 <=1.7.x 仍需等待
4544```
4645
47- 4 . ** 版本切换** :调用 ` doc.checkout(frontiers) ` 切换到其他版本时,同样会在微任务后触发事件 。
46+ 4. **版本切换**:调用 `doc.checkout(frontiers)` 切换到其他版本时,同样会同步触发事件(v1.8+) 。
4847
4948```ts no_run twoslash
5049import { LoroDoc } from " loro-crdt" ;
5150// ---cut---
5251const doc = new LoroDoc();
5352const frontiers = doc.frontiers();
54- doc .checkout (frontiers ); // 微任务后触发事件
55- await Promise .resolve ();
53+ doc.checkout(frontiers); // v1.8+ 会立即触发事件
54+ // await Promise.resolve(); // 仅在 <=1.7.x 仍需等待
5655```
5756
5857## 事务行为
0 commit comments