Apps assíncronas¶
O Rung possui dois tipos de chamada de retorno para a função principal. Um app pode ser síncrona ou assíncrona. Um app síncrona executa linha a linha e tem seu valor processado retornado. É o caso, por exemplo, de um app que parabenize o indivíduo no seu aniversário. Quando um app precisa "esperar" uma resposta, temos o caso de um app assíncrona. Exemplos são requisições HTTP.
Para diferenciar apps síncronas e assíncronas, utilizamos um segundo
parâmetro na função principal, o done
. Quando o done
é passado,
app não termina de executar até que a função done
seja chamada com os
cartões a serem gerados. Na outra situação, o app termina sua execução até
quando o primeiro return
for encontrado.
App síncrona¶
1 2 3 4 5 | function main(context) { return { cards: ["Hello world!"] } } |
App assíncrona¶
1 2 3 4 5 6 7 | function main(context, done) { setTimeout(() => { done({ cards: ["Hello world!"] }); }, 3000); } |
No segundo exemplo, o app leva 3 segundos para executar e então gerar o
cartão Hello world!
.