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