提交 ef158fe8 编写于 作者: NoSubject's avatar NoSubject

Merge branch 'fix/Paused_on_promise_rejection' into 'wrdp'

修复Promise rejection错误

See merge request o2oa/o2oa!2882
...@@ -225,20 +225,30 @@ if (!window.Promise){ ...@@ -225,20 +225,30 @@ if (!window.Promise){
cb = (callback[name]) ? callback[name] : ((callback[key]) ? callback[key] : null); cb = (callback[name]) ? callback[name] : ((callback[key]) ? callback[key] : null);
} }
} }
if (cb){ if (cb) return cb.apply(b, par);
if (promise_cb){ //return null;
var r = cb.apply(b, par);
// if (cb){
// if (promise_cb){
// var r = cb.apply(b, par);
//
// window.setTimeout(function(){
// promise_cb(r);
// },0)
// //return promise_cb(r);
// }else{
// return cb.apply(b, par);
// }
// //return (promise_cb) ? promise_cb(cb.apply(b, par)) : cb.apply(b, par) ;
// }
// if (promise_cb){
// window.setTimeout(function(){
// promise_cb.apply(b, par);
// },0)
//
// //return promise_cb.apply(b, par);
// }
return promise_cb(r);
}else{
return cb.apply(b, par);
}
//return (promise_cb) ? promise_cb(cb.apply(b, par)) : cb.apply(b, par) ;
}
if (promise_cb){
return promise_cb.apply(b, par);
}
return null;
//return (promise_cb) ? promise_cb.apply(b, par) : null; //return (promise_cb) ? promise_cb.apply(b, par) : null;
// if (key.toLowerCase()==="success" && (type==="function" || type==="o2_async_function")){ // if (key.toLowerCase()==="success" && (type==="function" || type==="o2_async_function")){
...@@ -1457,15 +1467,16 @@ if (!window.Promise){ ...@@ -1457,15 +1467,16 @@ if (!window.Promise){
layout.session.token = xToken; layout.session.token = xToken;
} }
} }
//resolve(); resolve(responseJSON);
return o2.runCallback(callback, "success", [responseJSON],null, resolve); //return o2.runCallback(callback, "success", [responseJSON],null, resolve);
}, },
onFailure: function(xhr){ onFailure: function(xhr){
//reject(); reject(xhr);
return o2.runCallback(callback, "requestFailure", [xhr], null, reject); //return o2.runCallback(callback, "requestFailure", [xhr], null, reject);
}.bind(this), }.bind(this),
onError: function(text, error){ onError: function(text, error){
return o2.runCallback(callback, "error", [text, error], null, reject); reject(null, text, error);
//return o2.runCallback(callback, "error", [text, error], null, reject);
}.bind(this) }.bind(this)
}); });
...@@ -1486,6 +1497,12 @@ if (!window.Promise){ ...@@ -1486,6 +1497,12 @@ if (!window.Promise){
res.send(data); res.send(data);
}.bind(this)); }.bind(this));
p = p.then(function(responseJSON){
return o2.runCallback(callback, "success", [responseJSON],null);
}, function(xhr, text, error){
return o2.runCallback(callback, "failure", [xhr, text, error], null);
});
//var oReturn = (callback.success && callback.success.isAG) ? callback.success : callback; //var oReturn = (callback.success && callback.success.isAG) ? callback.success : callback;
var oReturn = p; var oReturn = p;
oReturn.res = res; oReturn.res = res;
...@@ -1513,15 +1530,23 @@ if (!window.Promise){ ...@@ -1513,15 +1530,23 @@ if (!window.Promise){
layout.session.token = xToken; layout.session.token = xToken;
} }
} }
o2.runCallback(callback, "success", [result.data], null, s); s(result.data);
//o2.runCallback(callback, "success", [result.data], null, s);
}else{ }else{
o2.runCallback(callback, "failure", [result.data], null, f); f(result.data);
//o2.runCallback(callback, "failure", [result.data], null, f);
} }
actionWorker.terminate(); actionWorker.terminate();
} }
actionWorker.postMessage(workerMessage); actionWorker.postMessage(workerMessage);
}.bind(this)); }.bind(this));
p = p.then(function(data){
return o2.runCallback(callback, "success", [data],null);
}, function(data){
return o2.runCallback(callback, "failure", [data], null);
});
//var oReturn = (callback.success && callback.success.addResolve) ? callback.success : callback; //var oReturn = (callback.success && callback.success.addResolve) ? callback.success : callback;
var oReturn = p; var oReturn = p;
oReturn.actionWorker = actionWorker; oReturn.actionWorker = actionWorker;
......
...@@ -198,14 +198,24 @@ MWF.xAction.RestActions = MWF.Actions = { ...@@ -198,14 +198,24 @@ MWF.xAction.RestActions = MWF.Actions = {
} }
cb(); cb();
}); });
//actionArgs.unshift(null);
actionArgs.unshift(function(json){ actionArgs.unshift(function(json){
jsons[i] = json; jsons[i] = json;
res.push(true); res.push(true);
cb(); cb();
}); });
action.action[action.name].apply(action.action, actionArgs); var p = action.action[action.name].apply(action.action, actionArgs);
// p.catch(function(xhr, text, error){
// res.push(false);
// if (!cbf){
// _doError(xhr, text, error);
// }else{
// cbf();
// }
// cb();
// })
}else{ }else{
action.action[action.name](function(){ action.action[action.name](function(){
jsons[i] = json; jsons[i] = json;
......
...@@ -620,8 +620,8 @@ MWF.xDesktop.Actions.RestActions.Callback = new Class({ ...@@ -620,8 +620,8 @@ MWF.xDesktop.Actions.RestActions.Callback = new Class({
onRequestFailure: function(xhr){ onRequestFailure: function(xhr){
return this.doError(xhr, "", ""); return this.doError(xhr, "", "");
}, },
onFailure: function(xhr){ onFailure: function(xhr, text, error){
return this.doError(xhr, "", ""); return this.doError(xhr, text, error);
}, },
onError: function(text, error){ onError: function(text, error){
return this.doError(null, text, error); return this.doError(null, text, error);
...@@ -653,6 +653,6 @@ MWF.xDesktop.Actions.RestActions.Callback = new Class({ ...@@ -653,6 +653,6 @@ MWF.xDesktop.Actions.RestActions.Callback = new Class({
} }
// throw "request error: "+errorText; // throw "request error: "+errorText;
} }
return xhr; return Promise.reject(xhr);
} }
}); });
...@@ -200,9 +200,9 @@ MWF.xApplication.process.Work.Main = new Class({ ...@@ -200,9 +200,9 @@ MWF.xApplication.process.Work.Main = new Class({
loadFormFlag = true; loadFormFlag = true;
check(); check();
}.bind(this), "failure": function(){ }.bind(this), "failure": function(){
layout.sessionPromise.then(function(){ // layout.sessionPromise.then(function(){
this.close(); // this.close();
}.bind(this), function(){}); // }.bind(this), function(){});
//this.close(); //this.close();
}.bind(this)}, id, id, id, [this.options.formid || this.options.form.id]); }.bind(this)}, id, id, id, [this.options.formid || this.options.form.id]);
}else{ }else{
...@@ -249,9 +249,9 @@ MWF.xApplication.process.Work.Main = new Class({ ...@@ -249,9 +249,9 @@ MWF.xApplication.process.Work.Main = new Class({
loadWorkFlag = true; loadWorkFlag = true;
check(); check();
}.bind(this), "failure": function(){ }.bind(this), "failure": function(){
layout.sessionPromise.then(function(){ // layout.sessionPromise.then(function(){
this.close(); // this.close();
}.bind(this), function(){}); // }.bind(this), function(){});
//this.close(); //this.close();
}.bind(this)}, id }.bind(this)}, id
); );
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册