Цикл не останавливается + не обновляет случайную строку
У моего скрипта есть две проблемы: он не обновляется случайным образом каждый новый раунд и работает вечно. Но, по моему мнению, это должно сделать и то и другое. Как я могу заставить цикл распознавать, что this.short изменился?
while ( ! this.short) {
random = Math.random().toString(36).substring(2,7).toUpperCase();
dpd.links.get({short: random}, function(res, err) {
if (err)
cancel('Error', 500);
if ( ! res.length)
this.short = random;
});
}
1 ответ
Math.random() фактически возвращает псевдослучайное число, посеянное с текущего времени. Поэтому неудивительно, что он не обновляется для каждого цикла.
Что касается this.short
: this
всегда относится к "владельцу" текущей функции. Итак this
в this.short = random
вероятно, отличается от this
в вашем цикле Что вам нужно сделать, это назначить this
к переменной в первую очередь. Например:
var current = this;
while (!current.short) {
...
current.short = random;
}