提问人:pavani lakshmi 提问时间:5/16/2023 最后编辑:pavani lakshmi 更新时间:5/16/2023 访问量:41
面临错误“回调.js:13 未捕获的类型错误:回调不是函数”
Facing error 'callbacks.js:13 Uncaught TypeError: callback is not a function'
问:
一旦打印到 10 个数字,我正在尝试打印一条消息“成功生成 10 个数字”,但面临问题面临错误“回调.js:13 未捕获的类型错误:回调不是函数”,即使我在参数中传递了回调函数。
回调.html:
<!DOCTYPE html>
<html lang="en-US">
<head>
<title>JS - Asynchronous - Callbacks</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<h3>Number generator till 15</h3>
<p id="num"></p>
<h3>Message</h3>
<p id="msg"></p>
<script src="callbacks.js" charset="utf-8"></script>
</body>
</html>
回调.js:
var a = setInterval(gen, 1000);
let n = 0;
function gen(callback){
n = n + 1;
document.getElementById('num').innerHTML = n;
if ( n == 10){
clearInterval(a);
}
callback();
}
function printMessage(){
document.getElementById('msg').innerHTML = 'Succesfully generated 10 numbers';
}
gen(printMessage);
答:
0赞
Nicolas Straub
5/16/2023
#1
更改为:var a = setInterval(gen, 1000);
var a = setInterval(function () {
gen(printMessage);
}, 1000);
这将在一秒钟的间隔内调用正确分配回调参数的 gen。
评论
0赞
pavani lakshmi
5/16/2023
根据您的建议修改了代码,但我的输出不符合预期。我希望在完成 gen() 函数后打印出消息“成功生成 10 个数字”,该函数必须生成/打印直到 10 个数字。
0赞
pavani lakshmi
5/16/2023
输出为: 数字生成器直到 15 10 消息 成功生成 10 个数字 我的预期输出是: 数字生成器直到 15 10 //继续递增并从 1 打印到 10。打印数字 10 后,它将停止,然后在 id msg 的 <p> 标签中将消息显示为“成功生成 10 个数字”。 (但是,消息在页面加载后显示 righ,我不想在这里使用 setTimeOut() 函数,但希望我的 gen() 函数首先打印到 10 个数字,然后必须运行 printMessage() 函数。
0赞
pavani lakshmi
5/16/2023
感谢您抽出时间接受采访,经过分析发现 callback();函数每秒运行一次,因此每次都打印。我添加了callback();一旦它达到第 10 号并且它起作用,它就会起作用。刚刚更改了 if 循环 if ( n == 10){ clearInterval(a); callback();
评论
setInterval(gen, 1000);
这里没有回调参数。gen