Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.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 Promise迭代-退出脚本标记,重新输入并删除HTML文件_Javascript_Html_Promise_Google Chrome Devtools - Fatal编程技术网

JavaScript Promise迭代-退出脚本标记,重新输入并删除HTML文件

JavaScript Promise迭代-退出脚本标记,重新输入并删除HTML文件,javascript,html,promise,google-chrome-devtools,Javascript,Html,Promise,Google Chrome Devtools,我正在写一个简短的程序来学习JavaScript中的承诺 该程序的目标是将数字列表(从5减少到0)打印到HTML页面上,每个数字之间的延迟为0.5秒。打印完0后,会弹出一个确认框,允许用户再次打印相同的数字或停止打印 目前,下面的代码大部分工作正常,但在内部循环的第一次和第二次迭代期间(在countdown()函数中)-在打印第一个5和4之间,它的行为非常奇怪 我在chrome dev中对它进行了大量调试,试图弄清楚发生了什么,因此我在代码部分下面提供了一个关于程序实际正在(或似乎正在)做什么的

我正在写一个简短的程序来学习JavaScript中的承诺

该程序的目标是将数字列表(从5减少到0)打印到HTML页面上,每个数字之间的延迟为0.5秒。打印完0后,会弹出一个确认框,允许用户再次打印相同的数字或停止打印

目前,下面的代码大部分工作正常,但在内部循环的第一次和第二次迭代期间(在
countdown()
函数中)-在打印第一个
5
4
之间,它的行为非常奇怪

我在chrome dev中对它进行了大量调试,试图弄清楚发生了什么,因此我在代码部分下面提供了一个关于程序实际正在(或似乎正在)做什么的分步指南,其中以粗体显示了奇怪的行为

这是大学的一项没有标记的任务,我设法说服了我的教授,因此非常感谢任何帮助。提前谢谢

//设置超时的等待时间
var wait=500;
功能计时器(毫秒){
返回新承诺((res)=>{
设置超时(res,ms);
});
}
异步函数倒计时(){
对于(设i=5;i>=0;i--){
文件。写(“
”); 文件.编写(i); 控制台日志(i); 等待计时器(wait).then(); } var c=确认(“您想再去吗?”); 文档。写入(“
用户确认:”); 文件。编写(c); 控制台日志(c); 返回c; } 异步函数repeatRun(){ var prom=新承诺(异步(res,rej)=>{ r=等待倒计时(); if(r){ res(); }否则{ rej(); } }); 舞会,那么( 数据=>{ 文件。写入(“
重新运行”); 控制台日志(“重新运行”); 重复运行(); }, 错误=>{ 文件。填写(“
结束”); 控制台日志(“结束”); } ); } 重复运行()

倒计时
倒计时
互联网应用Ex1

注意:由于document.write()会写入文档流,因此在关闭(加载)的文档上调用document.write()会自动调用document.open(),这将清除该文档

因此第一次(第一次迭代)文档没有完全加载,这意味着它是打开的,因此
document.write()
正常工作。但是在第一次迭代之后,文档以某种方式完成加载,因此文档现在关闭,现在当它调用
document.write()
时,它必须再次打开文档,因为它已关闭,这将清除整个文档(
5
替换为
4
)在其余的迭代中,文档保持打开状态,因此它可以像往常一样工作


您不应使用
document.write()
,而应使用任何其他方法更改页面内容。

一旦开始使用
document.write
,所有赌注都将被取消。基本上,您已经允许JavaScript对页面进行任意操作。如果要解决此问题,请不要使用
document.write