跳到主要内容

WorkingTreeWriteHost

Defined in: packages/rxdb/src/capture/capture-interceptor.ts:57

一次写调用的宿主:真实适配器本身,或事务内的 executor 门面

Remarks​

两者是同一个类的两副面孔,区别只在 runInTransaction:真实适配器上它新开一个排队事务, 门面上它被特判成 executor.run()——复用当前事务且绝不重新入队。捕获运行时要写工作树行 就必须有一个 executor,而「该新开还是该复用」只有宿主知道,所以取事务的唯一正确写法是 问宿主要,不是自己调 adapter.transaction()。

写原语的 this 也必须是宿主:mergeChanges 会把收到的 adapter 一路传给内部 helper, 绑到真实适配器会让它们的 query 走队列——而此刻队列唯一的槽位正被当前事务占着,即自锁。

Methods​

runInTransaction()​

runInTransaction<T>(fun, transactionLog?): Promise<Awaited<ReturnType<T>>>;

Defined in: packages/rxdb/src/capture/capture-interceptor.ts:59

新开(真实适配器)或复用(executor 门面)一个事务

Type Parameters​

Type Parameter
T extends TransactionFun

Parameters​

ParameterType
funT
transactionLog?boolean

Returns​

Promise<Awaited<ReturnType<T>>>