Groovy中的TimeDuration比较

时间:2010-08-11 11:33:07

标签: groovy

如何在groovy中执行以下操作:

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

现在我做这样的事情:

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

这在groovy中似乎不对,因为它只是我在java中的方式。

2 个答案:

答案 0 :(得分:2)

您可以将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 :(得分:1)

这样的东西?

def complete = false
use( groovy.time.TimeCategory ) {
  def end = new Date() + 5.seconds
  while( !complete && new Date() < end ) {
    sleep( 1000 )
  }
}