我有一个函数,一旦调用,该函数将调用另一个(同步)创建一个选项卡,然后在执行另一个函数(应将内容加载到新选项卡)之前(异步)等待两个条件为真。
我试图使函数异步,并找到方法来“暂停”其执行,直到条件成立为止。
setup.py
当有人手动(通过单击按钮/菜单)执行该功能时,此方法工作正常。但是,如果一次调用多次,则会创建许多选项卡,只有最后一个会加载内容。我需要一种方法来等待所述函数的第一次调用完全结束,然后再运行下一个。
答案 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
}
}