-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathasyncio.cpp
More file actions
65 lines (53 loc) · 1.21 KB
/
asyncio.cpp
File metadata and controls
65 lines (53 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
async var test()
{
println("do test function");
await asyncio.wait_for(asyncio.sleep(2000),100);
println("do test function done");
return "test";
}
async var test1()
{
println("do test1 function");
await asyncio.sleep(1000);
println("do test1 function done");
return "test1";
}
async var test2(){
throw "haha";
return "test2";
}
var test_call_back(var task, var context)
{
println(task.get_name());
println(context);
}
async var main() {
var task1 = asyncio.create_task(test());
task1.set_name("Custom names are used to distinguish");
task1.add_done_callback(test_call_back, "Custom context content");
var task2 = asyncio.create_task(test1());
test2().then([](var result){
println("result{result}");
}).catch([](var e){
echo e;
});
println(await test1());
var ret = await asyncio.wait(task1);
if (ret.timeout())
{
println("task1 was timeouted.");
}
println("state:{ret.state()}");
println(ret.result());
try {
println(await task2);
}
catch (var e)
{
println("oh,we catch some error");
println("{e.what()} line:{e.line()} file:{e.file()}");
println(e.callstack());
}
println("finish");
}
asyncio.run(main());