claro.middleware.deferred
Generic middlewares to adjust the resolution deferred.
wrap-deferred
(wrap-deferred engine f)
(wrap-deferred engine predicate f)
Middleware that will call f
on any batchwise-resolution deferred value, if the batch of Resolvable
values matches predicate
. For example, to set a timeout on Person
batch resolution (assuming Manifold deferreds):
(def run-engine
(-> (engine/engine)
(wrap-deferred
#(instance? Person (first %))
(fn [env deferred]
(d/timeout! deferred (:timeout env 1000))))))
Note:
f
will be called on the environment and the batch.
If no predicate
is given f
will be called on all deferred values.