【发布时间】:2015-02-04 00:54:39
【问题描述】:
我是 JavaScript 承诺的新手,我正在尝试将它们实现到 Android 设备上的一些 PhoneGap 代码中。我想记录异常,看起来异常被吞没了。请参阅下面的示例代码。由于调用不存在的函数“thiswillfail”而引发的异常不会在任何地方显示。我注释掉了不相关的代码并添加了代码来强制调用 AddRecord 承诺。代码检查记录是否存在,如果不存在,则返回错误所在的 AddRecord 承诺。我没有使用任何 3rd 方库。我做错了什么?
编辑:如果我在链“DoSomethingWithRecord”中添加另一个承诺,则当期望跳到捕获时调用此承诺。
function TestPromiseExceptionHandling() {
var record = null;
var CheckForRecord = function () {
return new Promise(function (resolve, reject) {
//getData(
// function (data) {
var data = "";
if (data != "") {
//record = new Record(data);
record = "existed";
resolve();
}
else return AddRecord();
// },
// function (err) {
// reject(new Error("An error occurred retrieving data, msg=" + err.message));
// });
});
};
var AddRecord = function () {
return new Promise(function (resolve, reject) {
thiswillfail();
//add record
var success = true;
record = "new";
if (success) resolve();
else reject(new Error("add record failed"));
});
};
var DoSomthingWithRecord = function () {
return new Promise(function (resolve, reject) {
alert(record);
resolve();
});
};
try {
CheckForRecord()
.then(DoSomthingWithRecord())
.catch(function (err) { alert(err.message);})
.then(function () { alert("done"); });
} catch (err) {
alert(err.message);
}}
【问题讨论】:
标签: javascript android promise