Aleteo Introducción El lenguaje -Dart primera etapa (C)

Aleteo Introducción El lenguaje -Dart primera etapa (C)

.

soporte asíncrono en 1.Dart

Future 1,1:
Future Promise y JavaScript son muy similares, que muestra una operación asíncrona representa la finalización de la valores de resultado final (o fracaso) y. En términos simples, se utiliza para manejar las operaciones asincrónicas, el procesamiento asincrónico tiene éxito en la ejecución de una operación exitosa, proceso asíncrono ha fallado en detectar los errores o las operaciones posteriores de parada. Un futuro corresponderá resultado, ya sea éxito o no.

.
1.2 Future.than
que puede recibir asíncrono de los resultados, y el proceso correspondiente. En el siguiente ejemplo, simulamos una operación que consume tiempo, y luego recibe el resultado de la ejecución que en el asíncrono e impreso, como sigue:

Future.delayed(new Duration(seconds: 2),(){
   return "hi world!";
}).then((data){
   print(data);
});

.

1.3 Future.catchError
cuando realizamos los errores de funcionamiento asíncrono, que puede capturar en un catchError, y luego hacer el tratamiento adecuado. En el ejemplo anterior, podemos lanzar un error, entonces el procesamiento código catchError es el siguiente:

Future.delayed(new Duration(seconds: 2),(){
//    return "hi world!";
  throw AssertionError("aha!");
}).then((data){
   print(data);
})
  .catchError((e)
{
  print(e);
});

.
1.4 Future.whenComplete
el significado y finall representaba casi similar, después del final de la ejecución asíncrona en nombre de, independientemente del éxito o el fracaso en última instancia, ejecutar código en Future.whenComplete.

Future.delayed(new Duration(seconds: 2),(){
   //return "hi world!";
   throw AssertionError("Error");
}).then((data){
   //执行成功会走到这里 
   print(data);
}).catchError((e){
   //执行失败会走到这里   
   print(e);
}).whenComplete((){
   //无论成功或失败都会走到这里
});

1.4 Future.wait
A veces, durante una operación asíncrona, tenemos que prestar atención a problemas de tiempo. Por ejemplo, dos imágenes son todos cargados y así terminaron por volver a cerrar el cuadro de diálogo, que es un tipo Furure parámetro de espera de la matriz, y luego esperar de nuevo como resultado la ejecución del código existirá en los resultados de la matriz. Código es el siguiente:

Future.wait([
  // 2秒后返回结果  
  Future.delayed(new Duration(seconds: 2), () {
    return "hello";
  }),
  // 4秒后返回结果  
  Future.delayed(new Duration(seconds: 4), () {
    return " world";
  })
]).then((results){
  print(results[0]+results[1]);
}).catchError((e){
  print(e);
});

1.5 asíncrono / Await
imaginar un escenario de este tipo, hay algunas operaciones de funcionamiento estará basado se ha completado, pero debido a que usamos la operación asincrónica, si llama con el fin de perder la sincronización de sólo un Futuro de recuerdo que la próxima un futuro, tales capas anidadas más tarde, perdió la legibilidad del código y facilidad de mantenimiento, dART este fenómeno se llama el infierno de devolución de llamada (devolución de llamada infierno). Así Dart, hay otras maneras de realizar este tipo de operaciones. Nos fijamos en el siguiente código:

task() async {
   try{
    String id = await login("alice","******");
    String userInfo = await getUserInfo(id);
    await saveUserInfo(userInfo);
    //执行接下来的操作   
   } catch(e){
    //错误处理   
    print(e);   
   }  
}

asíncrono utiliza para representar la función asíncrona, la función devolverá un objeto futuro definido, entonces se puede añadir un método para utilizar una función de devolución de llamada.
esperan ser seguido por un Futuro, representa la espera de que se complete la tarea asincrónica, la finalización asíncrona va a bajar, ESPERANDO debe aparecer dentro de la función asíncrona.
Podemos ver, pasamos asíncrono / aguardan un flujo asíncrono representado por código síncrono.

De hecho, tanto el código JavaScript y Dardo en, asíncrono / aguardan a sólo un azúcar sintáctico, el compilador o intérprete con el tiempo se pueden convertir en una cadena llamada Promise (futuro).

Corriente 1,6
corriente se utiliza para diferentes datos que recibe eventos asíncronos, y el futuro, que puede recibir una pluralidad de resultado de la operación asíncrona (éxito o fallo). En otras palabras, cuando se realizan tareas asíncronas, éxito o el fracaso pueden ser desencadenadas por eventos muchas veces para obtener resultados o de excepción de error de datos. Corriente comúnmente utilizado en tareas asíncronas será leído muchas veces los datos de escena, tales como la descarga de contenidos web, leer y escribir archivos y así sucesivamente. Por ejemplo:

Stream.fromFutures([
  // 1秒后返回结果
  Future.delayed(new Duration(seconds: 1), () {
    return "hello 1";
  }),
  // 抛出一个异常
  Future.delayed(new Duration(seconds: 2),(){
    throw AssertionError("Error");
  }),
  // 3秒后返回结果
  Future.delayed(new Duration(seconds: 3), () {
    return "hello 3";
  })
]).listen((data){
   print(data);
}, onError: (e){
   print(e.message);
},onDone: (){

});

Parte superior del primer código de salida:
hello1, error, hello3

Sección de Dardo en que aquí, en la reserva después de este conocimiento, podemos realmente empezar a aprender trémolo, creo que hay un poco excitado. A partir de Java para el codificador debe leer cuidadosamente el código, porque la idea de Dart y Java son muy diferentes. Artículo siguiente empezamos gira trémolo

Publicado 47 artículos originales · elogios ganado 15 · Vistas a 10000 +

Supongo que te gusta

Origin blog.csdn.net/qq_41525021/article/details/104329642
Recomendado
Clasificación