Conceptos: Uso de promesas JavaScript

En este tema, aprenderá a usar Promesas de JavaScript, que son devueltas por algunos métodos de Brightcove Player.

Promesa simple

Aunque el propósito de este documento NO es enseñarle a escribir un JavaScript Promise, para entender cómo utilizarlo es instructivo ver cómo es simple Promise está codificado.

A continuación, un Promise Se crea que devuelve una cadena que indica si una tarea se completó o no. El punto clave es que Promise.resolve() o Promise.reject() se llama al método. En este caso, ambos métodos pasan una cadena simple, pero podría ser un objeto.

let promiseToFinishTask = new Promise(function(resolve, reject) {        
  //Business logic to set taskComplete boolean
  let taskComplete = true;
  if (taskComplete) {
    resolve('Yea, I am done');
  } else {
    reject('Not quite done');
  }
});

Ahora verás cómo lidiar con las devoluciones. Promise información, que es lo que hará con algunas llamadas al método API de Brightcove Player. El manejo básico de a sigue:

sigue:
promiseName.then(
  // Function call for promise resolved
).catch(
  // Function call for promise rejected
)

El manejo del ejemplo simple anterior aparecería como se muestra aquí:

promiseToFinishTask.then(function(fromResolve) {
  console.log(fromResolve);
}).catch(function(fromReject) {
  console.log(fromReject);
});

Si el Promise se resuelve el then se ejecuta el código, y si el Promise es rechazado el catch se ejecuta el código. Por ejemplo, una de las cadenas Yea, I am done o Not quite done aparecería en función de la lógica empresarial que establece el taskComplete valor de la variable.

Ejemplo de Brightcove

El jugador de Brightcove play() El método puede devolver una Promesa que se puede usar para verificar si el reproductor puede reproducir automáticamente el video que se encuentra actualmente en el reproductor. El código que se ocupa de la Promise está resaltado:

var myPlayer = videojs.getPlayer('myPlayerID');
myPlayer.on('loadedmetadata',function() {
  var promise = myPlayer.play();
  if (promise !== undefined) {
    promise.then(function() {
      // Autoplay started!
    }).catch(function(error) {
      // Autoplay was prevented.
    });
  }
});

En base a esto, puede codificar comportamientos si el video se reproduce automáticamente o no. Para un caso de uso específico que reproduce el video, con audio cuando sea posible, consulte la Caso de uso específico sección de la Consideraciones sobre la reproducción automática documento.

Para obtener información completa sobre las promesas de JavaScript, consulte el Promesa MDN documento.

Promise versus devolución de llamada

En esta sección el Catálogo get() se utiliza para demostrar la diferencia de sintaxis entre utilizar un Promise versus una función de devolución de llamada. La get() El método se puede utilizar con cualquier enfoque.

Sintaxis de promesa

El siguiente es un fragmento de código que muestra la llamada al get() método, manejando la respuesta como un Promise:

myPlayer.catalog.get(catalogParams).then(function(videosReturned){
  console.log('videosReturned',videosReturned);
  myPlayer.playlist(videosReturned);
}).catch(function(errorObj){
  console.log('errorObj',errorObj);
});

Sintaxis de la función de devolución de llamada

El siguiente es un fragmento de código que muestra la llamada al get() método, manejando la respuesta con una función de devolución de llamada:

myPlayer.catalog.get(catalogParams,function(errorObj,videosReturned){
  console.log('errorObj',errorObj);
  console.log('videosReturned',videosReturned);
  myPlayer.playlist(videosReturned);
});