我喜欢在我的Dart应用程序中模拟一个异步web服务调用进行测试。为了模拟这些模拟调用响应的随机性(可能是无序的),我想编程我的模拟在返回“Future”之前等待(睡眠)一段时间。
我该怎么做呢?
我喜欢在我的Dart应用程序中模拟一个异步web服务调用进行测试。为了模拟这些模拟调用响应的随机性(可能是无序的),我想编程我的模拟在返回“Future”之前等待(睡眠)一段时间。
我该怎么做呢?
当前回答
由于顶部答案的编辑que是完整的,这里是该问题的最新工作改编:
在异步代码中:
await Future<void>.delayed(const Duration(seconds: 1));
同步代码:
import 'dart:io';
sleep(const Duration(minutes: 1));
注意:这将阻塞整个进程(隔离),因此其他异步函数将不会被处理。它也不能在网络上使用,因为Javascript是纯异步的。
其他回答
它并不总是你想要的(有时你想要Future.delayed),但如果你真的想在Dart命令行应用程序中睡觉,你可以使用Dart:io的sleep():
import 'dart:io';
main() {
sleep(const Duration(seconds:1));
}
你也可以使用future .delayed工厂来完成延迟后的future。下面是两个函数在延迟后异步返回字符串的示例:
import 'dart:async';
Future sleep1() {
return new Future.delayed(const Duration(seconds: 1), () => "1");
}
Future sleep2() {
return new Future.delayed(const Duration(seconds: 2), () => "2");
}
你可以这样用:
sleep(Duration(seconds: 5));
Or
Future.delayed(const Duration(seconds: 5));
2019年版:
异步代码
await Future.delayed(Duration(seconds: 1));
同步代码
import 'dart:io';
sleep(Duration(seconds:1));
注意:这将阻塞整个进程(隔离),因此其他异步函数将不会被处理。它也不能在网络上使用,因为Javascript是纯异步的。
由于顶部答案的编辑que是完整的,这里是该问题的最新工作改编:
在异步代码中:
await Future<void>.delayed(const Duration(seconds: 1));
同步代码:
import 'dart:io';
sleep(const Duration(minutes: 1));
注意:这将阻塞整个进程(隔离),因此其他异步函数将不会被处理。它也不能在网络上使用,因为Javascript是纯异步的。