为了账号安全,请及时绑定邮箱和手机立即绑定

在查找事件完成时运行函数

在查找事件完成时运行函数

开心每一天1111 2022-08-04 16:12:44
我有这两个函数:async takeScreenShot() {  this.pauseVideo();  if (this.animations.length && !this.ended) {    this.pauseLotties()  }  this.captures.push(this.canvas.toDataURL('image/webp'));  if (!this.ended) {    setTimeout(() => {      this.takeScreenShot();    }, 500);  }},async pauseVideo() {  console.log("currentTime", this.video.currentTime);  console.log("duration", this.video.duration);  this.video.pause();  const oneFrame = 1 / 30;  if (this.video.currentTime + oneFrame < this.video.duration) {    this.video.currentTime += oneFrame;  } else {    this.video.play()  }}现在,我每500毫秒拍摄一次画布的屏幕截图。但我想使用seek事件截取屏幕截图,并承诺在完成搜索时让我知道,以便我可以截取屏幕截图。这样,它应该更有效地翻录视频,并可能更快。我该怎么做?setTimeout
查看完整描述

2 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

takeScreenShot(){

return new Promise((resolve,reject)=>{

    this.video.addEventListener("seeked", ()=>{

        return resolve()

    });

})

}


并使用调用它


    this.takeScreenShot().then(()=>{

          return this.pauseVideo()

     }).then(()=>{

console.log("Successfull completed")

})

请看我知道这是否有帮助


查看完整回答
反对 回复 2022-08-04
?
慕标5832272

TA贡献1966条经验 获得超4个赞

这就是我想出的解决方案。虽然这并不完全是Sandeep Nagaraj所建议的,但他的评论确实对我找到解决方案有很大帮助。因此,我赞成他担任这一职务。


async takeScreenShot(){

  let seekResolve;

  this.video.addEventListener("seeked", async () => {

          if (seekResolve) seekResolve();

        });

await new Promise(async (resolve,reject)=>{

  console.log("promise running", this.video);

  if(!this.ended){

  if(this.animations.length){

    this.pauseLotties()

  }  

   this.pauseVideo();

  await new Promise(r => (seekResolve = r));

  this.layer.draw();

  this.captures.push(this.canvas.toDataURL('image/webp'));

  resolve()

  this.takeScreenShot()

    }

})

},


查看完整回答
反对 回复 2022-08-04
  • 2 回答
  • 0 关注
  • 79 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信