我在我的代码中遇到了一个示例,它引导我重新审视Javascript中的回调,我总是摇摇欲坠。
示例:我需要函数“type”来执行并在函数“erase”之前完成。我可以添加一些计时器来确保它结束,但我想找到一个更好的方法。
挖掘类型:
function type() {
captionEl.html(caption.substr(0, captionLength++));
if(captionLength < caption.length+1) {
setTimeout('type()', 50);
} else {
captionLength = 0;
caption = '';
}
}
在caption =“”(没有“)之前,函数不会结束 - 那就是当我想看看erase()运行时。
那么,我是否将回调作为参数传递给类型(如类型(回调)),然后执行回调,其中caption设置为nothing?但是如何“测试”类型函数以将标题设置为“”?
答案 0 :(得分:0)
如果在4
完成后始终调用erase
,则不需要回调,只需要正常的函数调用:
type
如果function type() {
captionEl.html(caption.substr(0, captionLength++));
if(captionLength < caption.length+1) {
setTimeout(type, 50);
} else {
captionLength = 0;
caption = '';
erase();
}
}
type();
完成后发生的任何事情可能会有所不同,那就是您需要回调的时候:
type
callback只是一个在变量中传递的函数。 JavaScript有first-class functions,这意味着它们可以作为参数传递或由其他函数返回。 This article在更彻底地解释回调方面做得非常好。