Concepts : Utilisation des promesses JavaScript

Dans cette rubrique, vous apprendrez comment utiliser les promesses JavaScript, qui sont renvoyées par certaines méthodes Brightcove Player.

Promesse simple

Bien que ce n'est pas le but de ce document de vous apprendre à écrire un JavaScript Promise, pour comprendre comment les utiliser, il est instructif de voir comment un simple Promise est codé.

Dans ce qui suit, un Promise est créé qui renvoie une chaîne indiquant si une tâche a été terminée ou non. Le point clé est que soit le Promise.resolve() ou Promise.reject() méthode est appelée. Dans ce cas, une chaîne simple est passée par les deux méthodes, mais cela pourrait être un objet.

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

Maintenant, vous verrez comment traiter les Promise informations retournées, ce qui est ce que vous allez faire avec certains appels de méthode API Brightcove Player. La manipulation de base d'un suivant :

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

La manipulation de l'exemple simple ci-dessus apparaîtrait comme indiqué ici :

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

Si le Promise est résolu, le then code est exécuté, et si le Promise est rejeté, le catch code est exécuté. Pour l'exemple, une des chaînes Yea, I am done ou Not quite done apparaîtrait en fonction de la logique métier qui définit la valeur de la taskComplete variable.

Exemple Brightcove

La play() méthode du lecteur Brightcove peut renvoyer une promesse qui peut être utilisée pour vérifier si le lecteur peut lire automatiquement la vidéo actuellement dans le lecteur. Le code qui traite de l' Promise est en surbrillance :

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

Basé sur cela, vous pouvez alors coder les comportements si la vidéo jouée automatiquement ou non. Pour un cas d'utilisation spécifique de lecture de la vidéo, avec de l'audio lorsque c'est possible, reportez-vous à la section Cas d'utilisation spécifique du document Considérations de lecture automatique.

Pour des informations complètes sur les promesses JavaScript, consultez le Promesse MDN document.

Promise par rapport au rappel

Dans cette section, la get() méthode du catalogue est utilisée pour démontrer la différence de syntaxe entre l'utilisation d'une Promise fonction de rappel et d'une fonction de rappel. La get() méthode peut être utilisée avec l'une ou l'autre des approches.

Syntaxe Promise

Voici un extrait de code montrant l'appel à la get() méthode, gérant la réponse comme Promisesuit :

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

Syntaxe de la fonction de rappel

Ce qui suit est un extrait de code montrant l'appel à la get() méthode, gérant la réponse avec une fonction de rappel :

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