【发布时间】:2018-02-03 01:19:28
【问题描述】:
我不明白为什么 Firefox 说:“TypeError: fadeIn_1(...) is undefined” 并且 Chrome 使用此代码说“未捕获的类型错误:无法读取未定义的属性 'then'”:
function fadeIn_1(cpt) {
cpt = cpt + step;
if (cpt < 500) {
console.log("cpt = " + cpt);
setTimeout(function() {
fadeIn_1(cpt);
}, ticks);
} else {
console.log("cpt = " + cpt);
return new Promise(function(resolve, reject) {
resolve("Succeed");
console.log("THE END. Ticks = " + ticks);
});
}
}
var cpt = 1;
var step = 10;
var TimeDuration = 500; // ms
var ticks = 15; // Duration.
fadeIn_1(cpt).then(function() {
console.log('Promise executed !');
});
我想要的结果:控制台中的“承诺执行”。
提前感谢您的帮助
【问题讨论】:
-
cpt < 500时你没有返回承诺。 -
确实如此,但初始值为
500,并且每次都会添加。我无法用这些值重现错误。 -
我收回了。该错误显示在真实控制台中,但不是 Stack Snippet 控制台模拟器。
-
我不知道我从哪里得到初始值为500的想法。它没有使用
TimeDuration。问题正如@DanielA.White 所说。由于您以cpt = 1开头,因此它采用第一个if分支并且不返回承诺。 -
你是对的,TimeDuration 是不需要的。但是当 cpt > 500 时,console.log 显示“THE END.Ticks =” + ticks;但是没有resolve()...
标签: javascript promise es6-promise