我正在运行这个 Parse.com 云代码作业。它查询我的一个类并获取 url,然后我读取这些 url,它们是 xml 文件,我从中获取一些数据并将其保存以进行解析。从代码中可以看出。
这是代码
完整代码在这里 gist.github.com/gouegd/aae61aa08b8295d52b08
当我运行这个云代码作业时。在控制台中。我看到这条消息
Failed with: Uncaught 一个 promise 被拒绝了,即使它已经被拒绝了。
这是因为一些 url 无效,然后代码中断。
基本上我需要一种方法来处理其中一个 URL 不工作并且代码没有停止的情况!!并继续其他网址。
这个问题发生在第 77-83 行之间,传递 url 变量的地方,所以我需要它忽略错误的 url,然后继续处理其余的 url。
提前感谢您的帮助。
最佳答案
这是一条奇怪的错误信息。
据我所知...
在第 89 行和第 90 行之间插入:
}, function() {
return Parse.Promise.as();//return resolved promise to keep the promise chain going.
给予:
return Parse.Cloud.httpRequest({
url: url,
//data: ... //some properties of menuItem?
}).then(function(httpResponse) {
return readResponse_async(httpResponse.text).then(function(res) {
if (res.menu.day.at(dayNumber).meal) {
return saveMeals_async(res.menu.day.at(dayNumber).meal, school, diningHallNumber, menuLocation);
} else {
return Parse.Promise.as();//return resolved promise to keep the promise chain going.
}
}, function() {
return Parse.Promise.as();//return resolved promise to keep the promise chain going.
});
});
或者再低一行:
return Parse.Cloud.httpRequest({
url: url,
//data: ... //some properties of menuItem?
}).then(function(httpResponse) {
return readResponse_async(httpResponse.text).then(function(res) {
if (res.menu.day.at(dayNumber).meal) {
return saveMeals_async(res.menu.day.at(dayNumber).meal, school, diningHallNumber, menuLocation);
} else {
return Parse.Promise.as();//return resolved promise to keep the promise chain going.
}
});
}, function() {
return Parse.Promise.as();//return resolved promise to keep the promise chain going.
});
编辑
由于这两个都未能处理错误,您可以试试这个,如果我怀疑 Parse 的 promise 不是“抛出安全”的话,这很困惑但可以容忍:
return Parse.Cloud.httpRequest({
url: url,
//data: ... //some properties of menuItem?
}).then(function(httpResponse) {
try {
return readResponse_async(httpResponse.text).then(function(res) {
if (res.menu.day.at(dayNumber).meal) {
return saveMeals_async(res.menu.day.at(dayNumber).meal, school, diningHallNumber, menuLocation);
} else {
throw new Error();
}
});
}
catch(e) {
return Parse.Promise.as();//return resolved promise to keep the promise chain going.
}
}, function() {
return Parse.Promise.as();//return resolved promise to keep the promise chain going.
});
关于Javascript -Uncaught promise 被拒绝,即使它已经被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26677920/