2017-01-15 9 views
0

私はexecuteAsyncScriptと、以下の機能があります。分度器:executeAsyncScriptが完了するのを待つ方法は?

this.playVideoAtIndex = function(index) { 
    return browser.executeAsyncScript((index) => { 
     let video = document.querySelectorAll('#video'); 
      video.oncanplay =() => { 
       video.play(); 
      }; 
    }, index); 
} 

を私はそれが終わった後にのみ、何かを実行したいが、スクリプトがexcutedた後解決の約束を返すようには思えません。

答えて

1

あなたはあなたの最後の引数としてcallbackを追加し、それを呼び出す必要があります。

this.playVideoAtIndex = function(index) { 
    return browser.executeAsyncScript((index, callback) => { 
     let video = document.querySelectorAll('#video'); 
      video.oncanplay =() => { 
       video.play(); 
       callback(); 
      }; 
    }, index); 
} 
-2

あなたはそれがメイン分度器非同期キューで実行されますので、Protractor's control flowにあなたの機能をラップする必要があります。

this.playVideoAtIndex = function(index) { 
    return browser.controlFlow().execute(function() { 
    browser.executeAsyncScript((index) => { 
     let video = document.querySelectorAll('#video'); 
     video.oncanplay =() => { 
      video.play(); 
     }; 
     }, index); 
    }); 
}; 
関連する問題