Ожидание состояния задания DONE — клиент Dart для BigQuery

Клиент Dart для Bigquery является асинхронным, необходимо запрашивать состояние задания в соответствии с кодом Java ниже. Как я могу добиться того же в Dart?

//Java Equivalent
Job job = bigquery.jobs().insert(PROJECT_ID, runJob).execute();
String status = job.getStatus().getState();
while(!status.equalsIgnoreCase("DONE")) {
status = bigquery.jobs().get(PROJECT_ID,  job.getId()).execute().getStatus().getState();       
System.out.println("Status: " + status);
Thread.wait(1000);
}

person Johan    schedule 19.04.2014    source источник


Ответы (1)


Что-то вроде

Future poll() {
  return new Future.delayed(new Duration(seconds: 1), () => job.getStatus().getState()).then((e) {
    if(e.done) {
      somethingToDoAfterGotState());
    } else {
      return poll();
    }
  });
}

(не испытано)

person Günter Zöchbauer    schedule 21.04.2014