我向将来带有“requestServer”的服务器启动请求。
我想轮询系统以获取特定值(请求完成时从false传递到true),并在完成时返回。

代码可能像这样,但是“同时”同步和“checkOperation”是异步的吗?

return requestServer().then((operation) {
  var done = false;
  while (done)
    return checkOperation(operation).then((result) {
      done = (result == true);
    });
    sleep(10);
  }
});

有任何想法吗 ?

最佳答案

我猜这不是您想要的,但据我所知,没有办法阻止执行,因此您必须使用回调。

void main(List<String> args) {

  // polling
  new Timer.periodic(new Duration(microseconds: 100), (t) {
    if(isDone) {
      t.cancel();
      someCallback();
    }
  });

  // set isDone to true sometimes in the future
  new Future.delayed(new Duration(seconds: 10), () => isDone = true);
}

bool isDone = false;

void someCallback() {
  print('isDone: $isDone');
  // continue processing
}

您当然可以将回调作为参数传递,而不是对其进行硬编码,因为函数是Dart中的一等成员。

关于dart - 执行 future 直到参数变为真,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22332326/

10-12 06:55