Skip to content

Commit 3729b88

Browse files
committed
enhance: use p/delay to yield to ensure ui db updated before resolve
1 parent 208bda8 commit 3729b88

File tree

2 files changed

+13
-21
lines changed

2 files changed

+13
-21
lines changed

src/main/frontend/common/async_util.cljc

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@
66
[logseq.common.util :as common-util]
77
[promesa.core :as p])))
88

9-
#?(:cljs
10-
(defn throw-err
11-
[v]
12-
(if (instance? ExceptionInfo v) (throw v) v)))
9+
(comment
10+
#?(:cljs
11+
(defn throw-err
12+
[v]
13+
(if (instance? ExceptionInfo v) (throw v) v)))
1314

14-
(defmacro <?
15-
[port]
16-
`(throw-err (cljs.core.async/<! ~port)))
15+
(defmacro <?
16+
[port]
17+
`(throw-err (cljs.core.async/<! ~port))))
1718

1819
#?(:cljs
1920
(defn c->p

src/main/frontend/db/transact.cljs

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,16 @@
11
(ns frontend.db.transact
22
"Provides async transact for use with ldb/transact!"
3-
(:require [clojure.core.async :as async]
4-
[clojure.core.async.interop :refer [p->c]]
5-
[frontend.common.async-util :include-macros true :refer [<?]]
6-
[frontend.state :as state]
3+
(:require [frontend.state :as state]
74
[frontend.util :as util]
8-
[lambdaisland.glogi :as log]
95
[logseq.outliner.op :as outliner-op]
106
[promesa.core :as p]))
117

128
(defn worker-call
139
[request-f]
14-
(let [response (p/deferred)]
15-
(async/go
16-
(let [result (<? (p->c (request-f)))]
17-
(if (:ex-data result)
18-
(do
19-
(log/error :worker-request-failed result)
20-
(p/reject! response result))
21-
(p/resolve! response result))))
22-
response))
10+
(p/let [result (request-f)]
11+
;; yields to ensure ui db to be updated before resolved
12+
(p/delay 0)
13+
result))
2314

2415
(defn transact [worker-transact repo tx-data tx-meta]
2516
(let [tx-meta' (assoc tx-meta

0 commit comments

Comments
 (0)