在下面的代码中,for循环内的第一个if语句有时会触发两次。即使中断声明,它也会两次记录“ hello”,并且两次发送相同的SMS。奇怪的是,它仅发生在大约30%的时间。任何帮助表示赞赏。
for (let indexS = prisData.length - 1; -1 < indexS; indexS--) {
if (prisData[indexS].købt === true && prisData[indexS].købtFor < købsPrisNu - netto) {
solgtFor = købsPrisNu
solgt = true
console.log("hello");
nexmo.message.sendSms(from, to, 'Sælg wirtek til ' + solgtFor, {type : 'text'},(err, data) => {if (err != null) {console.log(err)}})
break
}
if (prisData[indexS].solgt === true) {
break
}
}
答案 0 :(得分:1)
让我为您简化此代码:
function foo()
{
for ([...]) {
if (...) {
[...]
console.log("hello");
sendSms();
break
}
[...]
}
}
不管[...]部分是什么,console.log("hello")
语句都不能为一次foo()调用两次。
多次执行该函数或调用该函数本身(例如sendSms()直接或间接调用foo()),多次执行log语句的唯一合理可能性是。