gpt4 book ai didi

javascript - 使用此 javascript 获取无限调用堆栈

转载 作者:行者123 更新时间:2023-11-28 16:02:54 24 4
gpt4 key购买 nike

我有:

var c = {
typeStart: function(msg, loc) {
loc.append("<p>");
this.typeLetter(msg, loc, 0);
},

typeLetter: function(msg, loc, pos) {
loc.append(msg.charAt(pos));
pos = pos + 1;
if (pos == msg.length) { this.typeEnd(loc); }
setTimeout(this.typeLetter(msg, loc, pos), 100);
},

typeEnd: function(loc) {
loc.append("</p>");
}
}

c.typeStart("hello", $("#somediv"));

出于某种原因,我显然错过了一些东西,typeLetter 被无限调用。我认为这与 javascript 的异步特性有关。

最佳答案

这是你的问题:

typeLetter: function(msg, loc, pos) {
loc.append(msg.charAt(pos));
pos = pos + 1;
if (pos == msg.length) { this.typeEnd(loc); }
setTimeout(this.typeLetter(msg, loc, pos), 100);
}, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

该函数将被调用,结果将被传递到setTimeout。您需要将其包装在匿名函数中:

setTimeout(function() {
this.typeLetter(msg, loc, pos);
}, 100);

关于javascript - 使用此 javascript 获取无限调用堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16290368/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com