Просмотр исходного кода

Remove go-loop for file writes

Tienson Qin 3 лет назад
Родитель
Сommit
762a74eec5
2 измененных файлов с 12 добавлено и 12 удалено
  1. 3 1
      src/main/frontend/handler/file.cljs
  2. 9 11
      src/main/frontend/modules/outliner/file.cljs

+ 3 - 1
src/main/frontend/handler/file.cljs

@@ -20,7 +20,8 @@
             [lambdaisland.glogi :as log]
             [promesa.core :as p]
             [frontend.mobile.util :as mobile]
-            [clojure.set :as set]))
+            [clojure.set :as set]
+            [frontend.modules.outliner.file :as outliner-file]))
 
 ;; TODO: extract all git ops using a channel
 
@@ -275,6 +276,7 @@
           (catch js/Error e
             (log/error :file/write-failed e))))
       (recur))
+    (outliner-file/ratelimit-file-writes!)
     chan))
 
 (defn watch-for-current-graph-dir!

+ 9 - 11
src/main/frontend/modules/outliner/file.cljs

@@ -54,14 +54,12 @@
 
 (def *writes-finished? (atom true))
 
-(let [ch (util/ratelimit write-chan batch-write-interval
-                         :filter-fn
-                         #(do (reset! *writes-finished? false) true)
-                         :flush-fn
-                         #(reset! *writes-finished? true))]
-
-  (async/go-loop []
-    (let [item (async/<! ch)
-          items (cons item (util/drain-chan ch))]
-      (write-files! items)
-      (recur))))
+(defn ratelimit-file-writes!
+  []
+  (util/ratelimit write-chan batch-write-interval
+                 :filter-fn
+                 #(do (reset! *writes-finished? false) true)
+                 :flush-fn
+                 #(do
+                    (write-files! %)
+                    (reset! *writes-finished? true))))