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