瀏覽代碼

ensure order on msg delivery

Nicolas Cannasse 18 年之前
父節點
當前提交
132ee430c0
共有 1 個文件被更改,包括 6 次插入1 次删除
  1. 6 1
      std/haxe/remoting/FlashJsConnection.hx

+ 6 - 1
std/haxe/remoting/FlashJsConnection.hx

@@ -4,6 +4,8 @@ class FlashJsConnection extends haxe.remoting.AsyncConnection {
 
 
 	#if flash
 	#if flash
 
 
+	static var pendingCalls = new Array();
+
 	override function __resolve( field : String ) : AsyncConnection {
 	override function __resolve( field : String ) : AsyncConnection {
 		var c = new FlashJsConnection(__data,__path.copy());
 		var c = new FlashJsConnection(__data,__path.copy());
 		c.__error = __error;
 		c.__error = __error;
@@ -20,7 +22,7 @@ class FlashJsConnection extends haxe.remoting.AsyncConnection {
 		var cnx : { private function escapeString(s : String) : String; } = haxe.remoting.Connection;
 		var cnx : { private function escapeString(s : String) : String; } = haxe.remoting.Connection;
 		var params = cnx.escapeString(s.toString());
 		var params = cnx.escapeString(s.toString());
 		var me = this;
 		var me = this;
-		haxe.Timer.delayed(function() {
+		pendingCalls.push(function() {
 			var s = flash.external.ExternalInterface.call("haxe.remoting.FlashJsConnection.flashCall",me.__data,path,f,params);
 			var s = flash.external.ExternalInterface.call("haxe.remoting.FlashJsConnection.flashCall",me.__data,path,f,params);
 			var v = null;
 			var v = null;
 			try {
 			try {
@@ -32,6 +34,9 @@ class FlashJsConnection extends haxe.remoting.AsyncConnection {
 			}
 			}
 			if( v != null )
 			if( v != null )
 				onData(v.r);
 				onData(v.r);
+		});
+		haxe.Timer.delayed(function() {
+			pendingCalls.pop()();
 		},0)();
 		},0)();
 	}
 	}