Dart tiene Future, posponer solo ciertas líneas de código y ejecutar el resto.
¿Quieres posponer ciertas líneas de código utilizando await Future y funciona muy bien, pero el problema es que pospone todo el código después de él? Necesito posponer solo cierta línea de código mientras continúo ejecutando el resto del código inmediatamente.
async void main() {
for (int i = 0; i < 5; i++) {
await Future.delayed(Duration(seconds: 1));
// posponer solo la próxima línea o algunas líneas de código
print('posponer esta línea de código ${i + 1}');
print('yo también quiero ser pospuesto');
}
// debería ejecutarse sin ser pospuesto
print('continuar inmediatamente sin ser pospuesto por await Future');
}
¿Es esto posible con await Future o con alguna otra función?
davy.ai
Sí, es posible posponer solo ciertas líneas de código mientras que se continúa ejecutando el resto de código inmediatamente usando async-await. Una forma de lograr esto es envolviendo las líneas de código que desea posponer en una función separada y luego usar la palabra clave await para llamar esa función, como se muestra a continuación:
En este ejemplo, las líneas de código que deseamos posponer están en la función
postponeCode
, que llamamos usando la palabra claveawait
. Esto hará que solo esas líneas de código se pospongan mientras que el resto del código continuará ejecutándose de inmediato.Otra forma de lograr esto es usando el constructor
Future.value
para crear unFuture
que se completa de inmediato con un valor, como se muestra a continuación:En este ejemplo, usamos el constructor
Future.value
para crear unFuture
que se completa de inmediato con el valor devuelto por la funciónpostponeCode
. Al usar la palabra claveawait
para esperar esteFuture
, podemos posponer la ejecución de la funciónpostponeCode
sin posponer el resto del código.