Сравнение TimeDuration в Groovy - PullRequest
       6

Сравнение TimeDuration в Groovy

0 голосов
/ 11 августа 2010

Как мне сделать следующее в groovy:

while (somethingIsntReady || now.isAfter(before + 5 minutes)) {
    sleep(1000)
}

Сейчас я делаю что-то вроде этого:

i = 1
while (!finishedFile.exists() && i in 1..300) {
    sleep(1000)
    i++
}

что не похоже на классный, потому что это просто способ, которым я бы делал это в Java.

Ответы [ 2 ]

2 голосов
/ 11 августа 2010

Вы можете использовать TimeCategory для такого рода выражений даты. Вот пример вместе с дополнительным методом existsUntil, который был добавлен в класс File:

import groovy.time.*

File.metaClass.existsUntil { timeout ->
    boolean result;

    while (!(result = delegate.exists()) && new Date().before(timeout)) {
        sleep(1000)
    }

    return result
}

use( TimeCategory ) {
    finishedFile.existsUntil(30.seconds.from.now)
}
1 голос
/ 11 августа 2010

Как то так?

def complete = false
use( groovy.time.TimeCategory ) {
  def end = new Date() + 5.seconds
  while( !complete && new Date() < end ) {
    sleep( 1000 )
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...