Не выходит из цикла

Добрый день!

Есть кусок кода:

var Done = false;
        while (!Done) {
                var Done = Cycle(FilePath, User, DateStr, TimeStr, PhonePart); 
        }

function Cycle(FilePath, User, DateStr, TimeStr, PhonePart) {
        var fso2 = new ActiveXObject('Scripting.FileSystemObject');
    var f2 = fso2.GetFolder('\\\\Pc230712\\sms');
        var fc = new Enumerator(f2.Files);
        for (; !fc.atEnd(); fc.moveNext())
        {
                var fl = fc.item();
                if (fso2.GetBaseName(fl.Path)) {
                                        var name = fso2.GetBaseName(fl.Path);
                                }
                if (name == 'SEND' + User + DateStr + TimeStr + 'x' + PhonePart + 'done'){
                                        Log.Write(1, 'TRUE!!!!!!');
                                    return true;
                                }                                
    }
    System.Sleep(10000);
        return false;
}

Функция сканирует папку, и пока нужный файл не появится, скрипт выполняется, но когда условие совпадает и функция должна возвратить true, Террасофт зависает прямо перед строчкой return true; Подскажите, что можно сделать в данной ситуации?

Нравится

3 комментария

Здравствуйте!
Пробовали ли Вы отладиться? На какой именно строке кода Террасофт зависает? Log.Write(1, 'TRUE!!!!!''); ?
И удалите "var" в цикле while:

var Done = false; 
        while (!Done) {
                Done = Cycle(FilePath, User, DateStr, TimeStr, PhonePart); 
        }

А лучше вообще одной строкой

        while (!Cycle(FilePath, User, DateStr, TimeStr, PhonePart)) {}

Спасибо! Записал while одной строкой, вроде заработало. Поглядим что будет дальше.

Показать все комментарии