Войдите или зарегистрируйтесь
Вы сможете писать комментарии и посты, ставить лайки и другое
Поиск
Тёмная тема

Gazapos: el equipo de filmación aparece en las escenas del manicomio de Terminator 2

En las escenas del manicomio de Terminator 2, el equipo de filmación cometió un par de errores. Y hablamos justamente del propio equipo de filmación.

La escena en la que salen en reversa y a toda velocidad del garaje del hospital psiquiátrico. Presten atención al lado derecho de la pantalla.
Arriba a la derecha, entre las sombras, se ve a los camarógrafos con su equipo. Aparecen apenas un segundo y medio, así que en un primer visionado de la película pasan desapercibidos. Es posible que después los editores hayan decidido que no era algo crítico, por lo que optaron por no cortar al equipo de filmación del encuadre ni retocarlo de alguna forma. Marqué el lugar con una flecha:
Показать полностью...
+2
4

Por qué return await en JS no siempre es malo, sino todo lo contrario: es lo correcto

Algunos desarrolladores de JS se hacen los listos y dicen que en vez de:
return await someService.doSomething();
hay que escribir:
return someService.doSomething();

O sea, si una función async devuelve una promesa en su return, el resultado de resolver esa promesa se convierte automáticamente en el valor de retorno real. Es decir, las promesas se "desempaquetan" de forma recursiva.

Todo esto suena bien, pero hay un problema bastante serio. Miren este código:
// Técnicamente esta función devuelve una promesa,
// pero en realidad lanza un error
async function fun1() {
  throw new Error('Hi from Famabara!');
}
(async () => {
  try {
    return await fun1();
  } catch (err) {
    console.log('Error catched!', err);
  }  
})();

Aquí todo va bien, el error se captura en el bloque catch. Pero si lo escribimos así:
async function fun1() {
  throw new Error('Hi from Famabara!');
}

try {
  (async () => {
    try {
      return fun1();
    } catch (err) {
      console.log('Error catched!', err);
    }  
  })();
} catch (err) {
  console.log('Error catched!', err);
}
¡entonces ninguno de los dos bloques catch captura el error! Esto es una desventaja tremendamente grave. El error simplemente no se puede capturar de ninguna manera, a menos que uses el método catch() directamente sobre la promesa, si no escribes await.

En fin, la recomendación de no escribir return await es una muy mala recomendación. Directamente perjudicial.
Показать полностью...
+1
3