概念:使用

在本主題中,您將學習如何使用由某些Brightcove Player方法返回的JavaScript Promises。

簡單的承諾

儘管本文檔的目的不是教您如何編寫JavaScript Promise,了解如何使用它們,看看如何簡單Promise被編碼。

在下面,Promise將創建一個返回字符串,該字符串指出任務是否已完成。關鍵是Promise.resolve()要么Promise.reject()方法被調用。在這種情況下,兩個方法都傳遞了一個簡單的字符串,但這可能是一個對象。

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

現在您將看到如何處理退貨Promise信息,這是您對某些Brightcove Player API方法調用所做的操作。基本的處理如下:

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

處理上面的簡單示例如下所示:

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

如果Promise解決了then代碼已執行,如果Promise被拒絕了catch代碼被執行。例如,字符串之一Yea, I am done要么Not quite done將根據設置taskComplete變量的值。

Brightcove的例子

Brightcove玩家的play()方法可能會返回一個Promise,可用於檢查播放器是否可以自動播放播放器中當前的視頻。處理Promise突出顯示:

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

基於此,您可以然後編碼是否自動播放視頻的行為。有關播放視頻和音頻的特定用例,請參見具體用例的部分自動播放注意事項文件。

有關JavaScript承諾的完整信息,請參見MDN承諾文件。

Promise與回調

在本節中,目錄的get()方法用於演示使用Promise與回調函數。的get()方法可以與任何一種方法一起使用。

無極語法

以下是顯示對的調用的代碼段get()方法,將響應作為Promise

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

回調函數語法

以下是顯示對的調用的代碼段get()方法,使用回調函數處理響應:

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