Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.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 - Fatal编程技术网

Javascript中的同步循环

Javascript中的同步循环,javascript,Javascript,我正在尝试使用Javascript自动化一项任务。我读了一个文本文件,每一行中的字符串都必须进入位于模态内部的文本输入中。要打开此模式,我需要单击一个按钮 我的代码的问题是,文本文件的最后一行被粘贴到文本输入中。。。显然,因为for循环在迭代之前不会等待其他指令完成 for (i=0; i <= rules.length; i++) { console.log(rules[i]); btn_new_segment.click(); txt_segment_name.

我正在尝试使用Javascript自动化一项任务。我读了一个文本文件,每一行中的字符串都必须进入位于模态内部的文本输入中。要打开此模式,我需要单击一个按钮

我的代码的问题是,文本文件的最后一行被粘贴到文本输入中。。。显然,因为for循环在迭代之前不会等待其他指令完成

for (i=0; i <= rules.length; i++) {
    console.log(rules[i]);
    btn_new_segment.click();
    txt_segment_name.value = rules[i]['name'];
    btn_save_segment.click();
}

for(i=0;i从您的代码中,您似乎已经在
规则中包含了内容,而
txt_段_名称
是位于您所说的模式中的
文本输入。
如果是这样的话,
for
循环可以立即将
rules
中每个元素的值设置为
txt\u segment\u name
,但是
txt\u segment\u name
直到整个JS代码执行结束才会显示出来。这就是为什么您刚才看到了
rules
的最后一个元素的值

您可以使用计时器/间隔来实现它

let currentIndex = 0;
let interval = setInterval(()=>{
    btn_new_segment.click();
    txt_segment_name.value = rules[currentIndex]['name'];
    btn_save_segment.click();
    currentIndex ++;
    if (currentIndex >= rules.length) {
       clearInterval(interval);
    }
}, 200);


然后你可以看到数组的值每200ms在输入中更改一次。我对
btn_new_segment
btn_save_segment
不太了解。你可能需要为它们更改代码。

更多的代码可能会有所帮助。但听起来你可以将所有文本保存到vars,然后在循环完成后将其放回all在模式中的文本字段中。这取决于
btn_新建_段的内容。单击();
btn_保存_段。单击();
。for循环将始终等待其他指令完成,然后再进行迭代。但是,如果单击执行了一些异步操作,那么您将只使用循环安排一些操作,并且很可能只“保存”最后一个操作。如果您不同意我的回答,有人可以留下评论吗?