@@ -44,7 +44,6 @@ It is not very easy to controll a complex flow of asynchronus operations special
4444
4545### 1. Hello World!!
4646
47-
4847``` java
4948
5049 Deferred<String > deferred = DeferredFactory . createDeferred();
@@ -79,10 +78,9 @@ It is not very easy to controll a complex flow of asynchronus operations special
7978
8079### 2. Promise Chaining
8180
82-
8381``` java
8482
85- Deferred<String > deferred = DeferredFactory . createDeferred();
83+ Deferred<String > deferred = DeferredFactory . createDeferred();
8684
8785 deferred. then(new Callbacks .SuccessCallBack<String , String > () {
8886 @Override
@@ -119,4 +117,51 @@ Deferred<String> deferred = DeferredFactory.createDeferred();
119117
120118 // to resolve use deferred.resolve("Hello");
121119 // to reject use deferred.reject(new RuntimeException("Hello Hell!!"));
120+ ```
121+
122+ ### 3. When all with Callable
123+
124+ ``` java
125+
126+ Deferred . when(new Callable<String > (){
127+ public String call () throws Exception {
128+ Thread . sleep(100 );
129+ return " Hello" ;
130+ }
131+ }, new Callable<String > (){
132+ public String call () throws Exception {
133+ Thread . sleep(200 );
134+
135+ // note: set accept value to false to raise an exception
136+ // uses for experiment
137+ if (accept) {
138+ return " " ;
139+ }
140+
141+ throw new RuntimeException (" Second call failed" );
142+ }
143+ }, new Callable<String > (){
144+ public String call () throws Exception {
145+ return " World!!" ;
146+ }
147+ }). then(new SuccessCallBack<Object , List<String > > () {
148+ @Override
149+ public Object call (List<String > values ) {
150+ String result = " " ;
151+ for (String value : values) {
152+ result = result + value;
153+ }
154+ System . out. println(result);
155+ return VoidType . NOTHING ;
156+ }
157+ }). fail(new Callbacks .FailureCallBack () {
158+ @Override
159+ public VoidType call (Exception reason ) {
160+ System . out. println(reason. getMessage());
161+ return VoidType . NOTHING ;
162+ }
163+ });
164+
165+ // now wait sometimes to give some time to finish tasks
166+ Thread . wait(1000 );
122167```
0 commit comments