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:
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);
});