forked from github/cordova-android
Catch exceptions in async callbacks.
This commit is contained in:
parent
1fa41df3f1
commit
b02f376826
@ -189,7 +189,7 @@ if (typeof _nativeReady !== 'undefined') { PhoneGap.onNativeReady.fire(); }
|
|||||||
PhoneGap.onDeviceReady = new PhoneGap.Channel('onDeviceReady');
|
PhoneGap.onDeviceReady = new PhoneGap.Channel('onDeviceReady');
|
||||||
|
|
||||||
PhoneGap.onDeviceReady.subscribeOnce(function() {
|
PhoneGap.onDeviceReady.subscribeOnce(function() {
|
||||||
PhoneGap.JSCallback();
|
PhoneGap.JSCallback();
|
||||||
});
|
});
|
||||||
|
|
||||||
PhoneGap.Channel.join(function() {
|
PhoneGap.Channel.join(function() {
|
||||||
@ -210,7 +210,7 @@ document.addEventListener('DOMContentLoaded', function() {
|
|||||||
PhoneGap.m_document_addEventListener = document.addEventListener;
|
PhoneGap.m_document_addEventListener = document.addEventListener;
|
||||||
|
|
||||||
document.addEventListener = function(evt, handler, capture) {
|
document.addEventListener = function(evt, handler, capture) {
|
||||||
var e = evt.toLowerCase();
|
var e = evt.toLowerCase();
|
||||||
if (e == 'deviceready') {
|
if (e == 'deviceready') {
|
||||||
PhoneGap.onDeviceReady.subscribeOnce(handler);
|
PhoneGap.onDeviceReady.subscribeOnce(handler);
|
||||||
} else if (e == 'resume') {
|
} else if (e == 'resume') {
|
||||||
@ -258,17 +258,19 @@ PhoneGap.execAsync = function(success, fail, clazz, action, args) {
|
|||||||
var callbackId = clazz + PhoneGap.callbackId++;
|
var callbackId = clazz + PhoneGap.callbackId++;
|
||||||
PhoneGap.callbacks[callbackId] = {success:success, fail:fail};
|
PhoneGap.callbacks[callbackId] = {success:success, fail:fail};
|
||||||
var r = PluginManager.exec(clazz, action, callbackId, JSON.stringify(args), true);
|
var r = PluginManager.exec(clazz, action, callbackId, JSON.stringify(args), true);
|
||||||
eval("var v="+r+";");
|
if (r) {
|
||||||
|
eval("var v="+r+";");
|
||||||
|
|
||||||
// If status is OK, then return value back to caller
|
// If status is OK, then return value back to caller
|
||||||
if (v.status == 0) {
|
if (v.status == 0) {
|
||||||
return v.message;
|
return v.message;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If error, then display error
|
// If error, then display error
|
||||||
else {
|
else {
|
||||||
console.log("Error: Status="+r.status+" Message="+v.message);
|
console.log("Error: Status="+r.status+" Message="+v.message);
|
||||||
return null;
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.log("Error: "+e);
|
console.log("Error: "+e);
|
||||||
@ -276,13 +278,23 @@ PhoneGap.execAsync = function(success, fail, clazz, action, args) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
PhoneGap.callbackSuccess = function(callbackId, args) {
|
PhoneGap.callbackSuccess = function(callbackId, args) {
|
||||||
PhoneGap.callbacks[callbackId].success(args);
|
try {
|
||||||
delete PhoneGap.callbacks[callbackId];
|
PhoneGap.callbacks[callbackId].success(args.message);
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
console.log("Error in success callback: "+callbackId+" = "+e);
|
||||||
|
}
|
||||||
|
delete PhoneGap.callbacks[callbackId];
|
||||||
};
|
};
|
||||||
|
|
||||||
PhoneGap.callbackError = function(callbackId, args) {
|
PhoneGap.callbackError = function(callbackId, args) {
|
||||||
PhoneGap.callbacks[callbackId].fail(args);
|
try {
|
||||||
delete PhoneGap.callbacks[callbackId];
|
PhoneGap.callbacks[callbackId].fail(args.message);
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
console.log("Error in error callback: "+callbackId+" = "+e);
|
||||||
|
}
|
||||||
|
delete PhoneGap.callbacks[callbackId];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user