Brightcove 支持聯繫支持|系統狀態系統狀況
頁面內容

    概念:使用

    在本主題中,您將學習如何使用由某些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);
              });