簡單的承諾
儘管本文檔的目的不是教您如何編寫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);
});