-1

我的脚本有两个问题:它不会在每个新回合中随机更新并且会一直运行。但在我看来,它应该两者兼而有之.. 我怎样才能让循环认识到 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;
    });
}
4

1 回答 1

1

Math.random() 实际上返回从当前时间播种的伪随机数。因此,它不会针对每个循环进行更新也就不足为奇了。

至于this.short:this总是指当前函数的“所有者”。所以thisinthis.short = random可能与this你的 while 循环中的不同。您需要做的是this首先分配给一个变量。例如:

var current = this;
while (!current.short) {
    ...
    current.short = random;
}
于 2013-08-08T17:27:27.850 回答