Conceptos: Uso de promesas JavaScript
Promesa simple
Aunque NO es el propósito de este documento enseñarle a escribir un JavaScript Promise
, para entender cómo usarlos es instructivo ver cómo Promise
se codifica un simple.
A continuación, Promise
se crea un que devuelve una cadena que indica si una tarea se completó o no. El punto clave es que se llama al método Promise.resolve()
o Promise.reject()
. En este caso, ambos métodos pasan una cadena simple, pero esto 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á cómo lidiar con la Promise
información devuelta, que es lo que hará con algunas llamadas al método de Brightcove Player API. El manejo básico de un siguiente:
promiseName.then(
// Function call for promise resolved
).catch(
// Function call for promise rejected
)
Manejar el ejemplo simple anterior aparecería como se muestra aquí:
promiseToFinishTask.then(function(fromResolve) {
console.log(fromResolve);
}).catch(function(fromReject) {
console.log(fromReject);
});
Si Promise
se resuelve el then
código se ejecuta, y si Promise
se rechaza el catch
código se ejecuta. Para el ejemplo, una de las cadenas Yea, I am done o Not quite done aparecería basada en la lógica de negocio que establece el valor de la taskComplete
variable.
Ejemplo de Brightcove
El play()
método de Brightcove Player puede devolver una Promesa que se puede utilizar para comprobar si el reproductor puede reproducir automáticamente el vídeo actualmente en el reproductor. El código que trata con el 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 vídeo se reproduce automáticamente o no. Para ver un caso de uso específico que reproduzca el vídeo, con audio cuando sea posible, consulte la sección Caso de uso específico del documento Consideraciones de reproducción automática .
Para obtener información completa sobre las promesas de JavaScript, consulte el documento MDN Promise .
Promise
versus devolución de llamada
En esta sección, el get()
método del catálogo se utiliza para demostrar la diferencia de sintaxis entre el uso de una función de devolución de llamada Promise
frente a una. El get()
método se puede usar con cualquiera de los enfoques.
Sintaxis Promise
El siguiente es un fragmento de código que muestra la llamada al get()
método, manejando la respuesta como 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);
});