Einfaches Versprechen
Obwohl es NICHT der Zweck dieses Dokuments ist, Ihnen das Schreiben eines JavaScript beizubringen Promise
Um zu verstehen, wie man sie benutzt, ist es lehrreich zu sehen, wie einfach es ist Promise
ist codiert.
Im Folgenden wird a Promise
wird erstellt, die eine Zeichenfolge zurückgibt, die angibt, ob eine Aufgabe abgeschlossen wurde oder nicht. Der entscheidende Punkt ist, dass entweder die Promise.resolve()
oder Promise.reject()
Methode wird aufgerufen. In diesem Fall wird von beiden Methoden eine einfache Zeichenfolge übergeben, dies kann jedoch ein Objekt sein.
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');
}
});
Jetzt werden Sie sehen, wie Sie mit der Rückgabe umgehen Promise
Informationen, die Sie mit einigen Brightcove Player-API-Methodenaufrufen ausführen werden. Die grundlegende Handhabung von a folgt:
promiseName.then(
// Function call for promise resolved
).catch(
// Function call for promise rejected
)
Die Behandlung des obigen einfachen Beispiels würde wie folgt aussehen:
promiseToFinishTask.then(function(fromResolve) {
console.log(fromResolve);
}).catch(function(fromReject) {
console.log(fromReject);
});
Wenn die Promise
ist das gelöst then
Code wird ausgeführt, und wenn die Promise
wird abgelehnt die catch
Code wird ausgeführt. Zum Beispiel eine der Zeichenfolgen Yea, I am done oder Not quite done würde basierend auf der Geschäftslogik erscheinen, die das festlegt taskComplete
Wert der Variablen.
Brightcove-Beispiel
Der Brightcove-Spieler play()
Die Methode gibt möglicherweise ein Versprechen zurück, mit dem überprüft werden kann, ob der Player das aktuell im Player befindliche Video automatisch wiedergeben kann. Der Code, der sich mit dem befasst Promise
ist markiert:
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.
});
}
});
Auf dieser Grundlage können Sie dann das Verhalten codieren, ob das Video automatisch abgespielt wurde oder nicht. Einen speziellen Anwendungsfall für die Wiedergabe des Videos mit Audio, wenn möglich, finden Sie in der Spezifischer Anwendungsfall Abschnitt der Überlegungen zur automatischen Wiedergabe Dokument.
Vollständige Informationen zu JavaScript-Versprechungen finden Sie in der MDN-Versprechen Dokument.
Promise
versus Rückruf
In diesem Abschnitt die Kataloge get()
Methode wird verwendet, um den Syntaxunterschied zwischen der Verwendung von a zu demonstrieren Promise
versus eine Rückruffunktion. Das get()
Methode kann mit beiden Ansätzen verwendet werden.
Versprechenssyntax
Das Folgende ist ein Codeausschnitt, der den Aufruf des get()
Methode, Behandlung der Antwort als Promise
::
myPlayer.catalog.get(catalogParams).then(function(videosReturned){
console.log('videosReturned',videosReturned);
myPlayer.playlist(videosReturned);
}).catch(function(errorObj){
console.log('errorObj',errorObj);
});
Syntax der Rückruffunktion
Im Folgenden finden Sie ein Codeausschnitt, das den Aufruf der get()
Methode zeigt und die Antwort mit einer Callback-Funktion behandelt:
myPlayer.catalog.get(catalogParams,function(errorObj,videosReturned){
console.log('errorObj',errorObj);
console.log('videosReturned',videosReturned);
myPlayer.playlist(videosReturned);
});