14
14
15
15
public class Tasks {
16
16
17
+ /**
18
+ * 将一个同步task转化为异步task
19
+ * @param task
20
+ * @param <DATA>
21
+ * @return
22
+ */
17
23
public static <DATA > LinkTask <DATA > async (ITask <DATA > task ) {
18
24
return new AsyncLinkTask <>(task , true );
19
25
}
@@ -22,31 +28,65 @@ public static <DATA> LinkTask<DATA> just(DATA data) {
22
28
return new DataLinkTask <>(data );
23
29
}
24
30
31
+ /**
32
+ * 通过同步task创建一个链式task
33
+ * @param task
34
+ * @param <DATA>
35
+ * @return 一个链式task
36
+ */
25
37
public static <DATA > LinkTask <DATA > create (ITask <DATA > task ) {
26
38
return new AsyncLinkTask <>(task , true );
27
39
}
28
40
41
+ /**
42
+ * 通过异步task创建一个链式task
43
+ * @param task
44
+ * @param <DATA>
45
+ * @return 一个链式task
46
+ */
29
47
public static <DATA > LinkTask <DATA > create (IAsyncTask <DATA > task ) {
30
48
if (task instanceof LinkTask ) {
31
49
return (LinkTask <DATA >) task ;
32
50
}
33
51
return new LinkProxyTask <>(task );
34
52
}
35
53
54
+ /**
55
+ * 通过一个同步dataSource创建一个链式task
56
+ * @param dataSource
57
+ * @param isExeRefresh true:dataSource的refresh转成task,false:dataSource的loadMore转成task
58
+ * @param <DATA>
59
+ * @return 一个链式task
60
+ */
36
61
public static <DATA > LinkTask <DATA > create (IDataSource <DATA > dataSource , boolean isExeRefresh ) {
37
62
return new AsyncLinkTask <>(dataSource , isExeRefresh );
38
63
}
39
64
65
+ /**
66
+ * 通过一个异步dataSource创建一个链式task
67
+ * @param dataSource
68
+ * @param isExeRefresh true:dataSource的refresh转成task,false:dataSource的loadMore转成task
69
+ * @param <DATA>
70
+ * @return 一个链式task
71
+ */
40
72
public static <DATA > LinkTask <DATA > create (IAsyncDataSource <DATA > dataSource , boolean isExeRefresh ) {
41
73
return new AsyncLinkTask <>(dataSource , isExeRefresh );
42
74
}
43
75
76
+ /**
77
+ * 按两个task先后顺序执行,task1的结果可以作为task的参数
78
+ * @param task task1
79
+ * @param func 将task的结果传给task2,返回一个可执行task2
80
+ * @param <D> 数据1
81
+ * @param <DATA> 结果数据
82
+ * @return
83
+ */
44
84
public static <D , DATA > LinkTask <DATA > concatMap (IAsyncTask <D > task , Func1 <D , IAsyncTask <DATA >> func ) {
45
85
return new ConcatLinkTask <>(task , func );
46
86
}
47
87
48
88
/**
49
- * 连接两个task
89
+ * 按两个task先后顺序执行
50
90
*
51
91
* @param task
52
92
* @param task2
@@ -63,6 +103,16 @@ public IAsyncTask<DATA> call(D data) throws Exception {
63
103
});
64
104
}
65
105
106
+ /**
107
+ * 合并两个task,两个task一起执行,其中一个报错就停止执行,func将两个d1和d2的结果转化成最终的data
108
+ * @param task1
109
+ * @param task2
110
+ * @param func
111
+ * @param <D1>
112
+ * @param <D2>
113
+ * @param <DATA>
114
+ * @return
115
+ */
66
116
public static <D1 , D2 , DATA > LinkTask <DATA > combine (IAsyncTask <D1 > task1 , IAsyncTask <D2 > task2 , Func2 <D1 , D2 , DATA > func ) {
67
117
return new CombineTask <>(task1 , task2 , func );
68
118
}
0 commit comments