Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环时显示模式并等待每个元素的操作_Javascript_For Loop_Twitter Bootstrap 3 - Fatal编程技术网

Javascript 循环时显示模式并等待每个元素的操作

Javascript 循环时显示模式并等待每个元素的操作,javascript,for-loop,twitter-bootstrap-3,Javascript,For Loop,Twitter Bootstrap 3,我正在寻找一个循环的简单解决方案,我必须确认每个元素。我在考虑暂停和恢复,但这相当麻烦。有没有别的办法让它变得简单?我相信这个问题并不罕见,很多人都坚持了下来 我想要实现的是,我在列表中循环,如果我没有通过EAN代码找到项目,那么它会打开搜索功能来查找该项目,在找到(或不找到)项目后,用户单击“下一步”继续循环,直到出现相同情况 我现在有一些代码: for(var f = 0; f < biLen; f++){ var ean_parsed = parse

我正在寻找一个循环的简单解决方案,我必须确认每个元素。我在考虑暂停和恢复,但这相当麻烦。有没有别的办法让它变得简单?我相信这个问题并不罕见,很多人都坚持了下来

我想要实现的是,我在列表中循环,如果我没有通过EAN代码找到项目,那么它会打开搜索功能来查找该项目,在找到(或不找到)项目后,用户单击“下一步”继续循环,直到出现相同情况

我现在有一些代码:

for(var f = 0; f < biLen; f++){

                var ean_parsed = parsedList[i][1];              
                if(beerList[f].get("ean") === ean_parsed){
                    console.log("Beer found: " + beerList[f].get("beer_name"));
                    break;
                } else {
                    if(f === biLen - 1){
                        //open modal, search for item and then continue looping    
                        console.log("B'r not found: " + parsedList[i][0]);                  
                    }                   
                }
            }
for(var f=0;f
编辑(整个功能代码,而不是其中的一部分):

函数parserCompareList(){
var parsedList=parseResult;
var piLen=parsedList.length;
var-beerList=listaPiwArr;
var biLen=beerList.length;
var新报价=[];
var counter=document.getElementById('imHeader');
对于(变量i=0;i
答复:
var索引缓存;
函数循环(){
var指数=indexCache | | 0;
对于(var f=指数;fvar indexCache;
函数循环(){
var指数=indexCache | | 0;
对于(var f=指数;f
我们有一个indexCache变量,它保存正在处理的啤酒的索引

如果找到了EAN,太好了!我们处理好它,然后继续喝下一杯啤酒

如果没有,我们将当前的beer索引存储在缓存中,并显示模式并立即退出循环。当模式被隐藏时,循环从缓存的索引恢复


另外,我假设您使用的是Twitter引导模式。因此,在事件“hide.bs.modal”中添加一个处理程序。但如果是这样的话,您自己的模式实现也可以做类似的事情。

请进一步解释,这个描述太模糊了。@Siddharth编辑过-这够了吗?我不知道哪些详细信息可以帮助您理解它谈到
modal
twitter bootstrap
,这是什么上下文?@Siddharth我需要在循环的每一步都显示它们-我不是专业的程序员,所以以防万一我想提一下。看起来不错!我更新了我的问题,因为在你的解决方案中有
return
语句退出所有循环。我想我们是v很接近实现:)很好的解决方案,可能值得指出OP问题中的缺陷。也就是说,除非使用本机确认对话框,否则无法在同步循环中收集输入,并且必须像以前那样进行异步代码shown@JuanMendes我第一次听说同步循环。是的,这是一个确认对话框.OP正在使用引导模式,因为他已经用Twitter引导标记了这个问题。循环必须是异步的。@Prashant好像我有一个奇怪的问题:每次
hide
打开模式后,我等待的时间越长,确认中间看到的日志越多,所以我想它仍然在循环。你能检查一下我是否犯了错误吗?
function parserCompareList(){                   

        var parsedList = parseResult;
        var piLen = parsedList.length;
        var beerList = listaPiwArr;
        var biLen = beerList.length;

        var new_offer = [];
        var counter = document.getElementById('imHeader');

        for(var i = 0; i < piLen; i++){
                    counter.innerHTML = i + "/" + piLen; //plain text that's keeping where we actually are with this
            for(var f = 0; f < biLen; f++){

                var ean_parsed = parsedList[i][1];              
                if(beerList[f].get("ean") === ean_parsed){

                    console.log("Beer found: " + beerList[f].get("beer_name"));
                    break;
                } else {
                    if(f === biLen - 1){
                        console.log("B'r not found: " + parsedList[i][0]);

                    }                   
                }
            }

    }

}
var indexCache;

function loop() {
    var index = indexCache || 0;

    for (var f = index; f < biLen; f++) {
        var ean_parsed = parsedList[i][1];
        if (beerList[f].get("ean") === ean_parsed) {
            console.log("Beer found: " + beerList[f].get("beer_name"));
            break;
        } else {
            if (f === biLen - 1) {
                // Assuming $modal is the bootstrap modal
                indexCache = f;

                //$modal.modal().one('hide.bs.modal', loop);
                $('#importModal').modal('show').one('hidden.bs.modal', loop) //  <-- this one works like a charm
                return;
            }
        }
    }
}

loop();
var indexCache;

function loop() {
    var index = indexCache || 0;

    for (var f = index; f < biLen; f++) {
        var ean_parsed = parsedList[i][1];
        if (beerList[f].get("ean") === ean_parsed) {
            console.log("Beer found: " + beerList[f].get("beer_name"));
            break;
        } else {
            if (f === biLen - 1) {
                // Assuming $modal is the bootstrap modal
                indexCache = f;

                $modal.modal().one('hide.bs.modal', loop);

                return;
            }
        }
    }
}

loop();