Naar aanleiding dat mijn applicatie meerdere operations achter elkaar pushde, gaf dit problemen in de vorm van "Channel Disconnected". Heb ik besloten om een queue te creeeren voor deze operations! Echter zit ik met het probleem dat mijn ResultEvents niet meer werken. De applicatie functioneerd nu dus niet.
met de functie AddCallQueue('operation','arguments','resultfunction') push ik een operation
Wat doe ik fout, of hoe kan het anders.
met de functie AddCallQueue('operation','arguments','resultfunction') push ik een operation
Wat doe ik fout, of hoe kan het anders.
code:
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
| package
{
import flash.events.Event;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.remoting.Operation;
import mx.rpc.remoting.RemoteObject;
public class RemoteCon
{
public var RemoteService:RemoteObject;
private var Queue:Array = new Array;
public function init():void
{
RemoteService = new RemoteObject();
RemoteService.destination = "GenericDestination";
RemoteService.source = "com.hscc.hscc";
RemoteService.addEventListener( FaultEvent.FAULT, onError );
}
public function AddCallQueue(op:String,arg:Array = null,rf:Function = null):void {
var i:Array = new Array;
i.push(op);
i.push(arg);
i.push(rf);
Queue.push(i);
QueueNext();
}
private function OnResult(result:ResultEvent):void{
QueueNext();
}
private function QueueNext():void{
if (Queue.length > 0){
trace('Queue called - operation: ' + Queue[0][0] + ' with arguments: ' + Queue[0][1]);
var call:Operation = new Operation(RemoteService);
call.name = Queue[0][0];
call.arguments = Queue[0][1];
if (Queue[0][2]){
trace('Add Eventlistener to ' + Queue[0][0]);
call.addEventListener(ResultEvent.RESULT, Queue[0][2]);
}
call.send();
Queue.shift();
} else {
trace('Queue empty');
}
}
private function onError(fault:FaultEvent):void
{
Alert.show( "Server raporteerd een fout: " + fault.fault.faultString, "Fout" );
}
}
} |