我向将来带有“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/