Uma vez que há um atraso quando um valor de um agente é atualizado, Clojure forneceu uma função 'esperar por' que é usada para especificar o tempo em milissegundos para esperar pela atualização do agente.
Sintaxe
A seguir está a sintaxe.
(await-for time agentname)
Parameters- 'nomedagente' é o agente para o qual a função 'espera por' deve ser definida como. 'time' é o tempo de espera em milissegundos.
Return Value - Retorna lógico falso se retornar devido ao tempo limite, caso contrário, retorna lógico verdadeiro.
Exemplo
Um exemplo de como isso é usado é mostrado no programa a seguir.
(ns clojure.examples.example
(:gen-class))
(defn Example []
(def counter (agent 0))
(println @counter)
(send-off counter + 100)
(println (await-for 100 counter))
(println @counter)
(shutdown-agents))
(Example)
Resultado
O programa acima produz a seguinte saída.
0
true
100
Você pode ver no programa acima que o valor do agente é impresso na tela imediatamente porque a função 'esperar por' incorporou um atraso, que permitiu a Clojure atualizar o valor do agente.
clojure_agents