Почему my for l oop иногда выполняется дважды, несмотря на мое использование оператора break? - PullRequest
0 голосов
/ 17 февраля 2020

В приведенном ниже коде первый оператор if внутри for для l oop иногда срабатывает дважды. Он регистрирует «привет» дважды, и одно и то же 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
        }
    }

1 Ответ

1 голос
/ 17 февраля 2020

Позвольте мне упростить этот код для вас:

function foo()
{
    for ([...]) {
            if (...) {
                [...]
                console.log("hello");
                sendSms();
                break
            }
              [...]
        }
}

Независимо от того, что находится в [...] частях, оператор console.log("hello") не может быть вызван дважды для одного вызова функции foo ().

Единственная разумная возможность для оператора log, выполняемого более одного раза, - это если функция вызывается несколько раз или она сама вызывает (например, sendSms () вызывает foo () прямо или косвенно).

...