瀏覽代碼

fix : onError should not be call if error occur in onData.

Nicolas Cannasse 19 年之前
父節點
當前提交
3362d2c4b9
共有 1 個文件被更改,包括 12 次插入2 次删除
  1. 12 2
      std/haxe/remoting/AsyncConnection.hx

+ 12 - 2
std/haxe/remoting/AsyncConnection.hx

@@ -50,14 +50,19 @@ class AsyncConnection implements Dynamic<AsyncConnection> {
 		h.setHeader("X-Haxe-Remoting","eval");
 		h.setParameter("__x",__path.join("."));
 		h.onData = function(data : String) {
+			var ok = true;
+			var v;
 			try {
 				if( data.length < 3 || data.substr(0,3) != "hxr" )
 					throw "Invalid response : '"+data+"'";
 				var s = new Unserializer(data.substr(3,data.length-3));
-				onData(s.unserialize());
+				v = s.unserialize();
 			} catch( err : Dynamic ) {
+				ok = false;
 				me.onError(err);
 			}
+			if( ok )
+				onData(v);
 		};
 		h.onError = onError;
 		h.request(true);
@@ -72,14 +77,19 @@ class AsyncConnection implements Dynamic<AsyncConnection> {
 		h.setHeader("X-Haxe-Remoting","call");
 		h.setParameter("__x",s.toString());
 		h.onData = function(data : String) {
+			var ok = true;
+			var v;
 			try {
 				if( data.length < 3 || data.substr(0,3) != "hxr" )
 					throw "Invalid response : '"+data+"'";
 				var s = new Unserializer(data.substr(3,data.length-3));
-				onData(s.unserialize());
+				v = s.unserialize();
 			} catch( err : Dynamic ) {
+				ok = false;
 				me.onError(err);
 			}
+			if( ok )
+				onData(v);
 		};
 		h.onError = onError;
 		h.request(true);