等待部分异步功能完成,然后再次执行

时间:2019-04-27 18:49:18

标签: javascript jquery

我有一个函数,一旦调用,该函数将调用另一个(同步)创建一个选项卡,然后在执行另一个函数(应将内容加载到新选项卡)之前(异步)等待两个条件为真。

我试图使函数异步,并找到方法来“暂停”其执行,直到条件成立为止。

setup.py

当有人手动(通过单击按钮/菜单)执行该功能时,此方法工作正常。但是,如果一次调用多次,则会创建许多选项卡,只有最后一个会加载内容。我需要一种方法来等待所述函数的第一次调用完全结束,然后再运行下一个。

1 个答案:

答案 0 :(得分:0)

我已经使用以下方法解决了这个问题(经过数小时的尝试和错误以及Google搜索):

一旦调用了main函数,它将把接收到的值压入一个数组并调用另一个函数,该函数创建一个选项卡,向其加载内容(存储在数组的第一个正数中),移动数组,然后再次执行案例中还有更多的价值。

代码:

var callagain=true;
var tabstocreate=[]
var onChosenFileToOpen = function(theFileEntry) { 
tabstocreate.push(theFileEntry)
    thequeue();


};

function thequeue(){

  if(callagain===true && tabstocreate.length>0){

    $('.nav-tabs li:nth-child(' + $(".nav-tabs").children().length + ') a').click(); 

    var checker=setInterval(()=>{
      if(currentiframe.contentWindow.editor){
        currentiframe.contentWindow.readFileIntoEditor(tabstocreate[0])
        tabstocreate.shift()
        clearInterval(checker)
        callagain=true
        if(tabstocreate.length>0){
          thequeue()
        }

      }

    },1)
    callagain=false
  }


}