Javascript-Uncaught一个承诺被拒绝了,尽管它已经被拒绝了
Javascript -Uncaught A promise was rejected even though it had already been rejected
我有一个正在运行的Parse.com云代码作业。它查询我的一个类并获取url,然后我读取这些url,它们是xml文件,我从中获取一些数据并保存以进行解析。如代码中所示。
这是代码
完整代码在这里gist.github.com/gouegd/aae61aa08b8295d52b08
当我运行这个云代码作业时。在控制台中。我看到这个消息
Failed with: Uncaught A promise was rejected even though it had already been rejected.
出现这种情况是因为一些url无效,然后代码中断。
基本上,我需要一种方法来处理它,当其中一个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的承诺不是"安全的":
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.
});
相关文章:
- 一个承诺换多个承诺-并发问题
- 手动拒绝路由承诺;不起作用
- WinJS,从可能是异步的函数返回一个承诺,也可能不是异步的
- 在jQuery中,.state()如何确定一个承诺是挂起的、已解决的还是被拒绝的
- 转换嵌套'对于'循环成一个承诺,为了一个承诺?嵌套承诺
- 为什么在Chrome上忽略被拒绝的承诺是错误的
- 返回Bluebird中被拒绝的承诺和onPossiblyUnhandledRejection处理程序
- 如何通过Bluebird承诺您自己的javascript api,该api使用另一个承诺的api
- jasmine 2.0测试angularjs的工厂方法,这是一个承诺
- 在 Mocha 中,返回将被拒绝的承诺与调用 done(err) 的效果不同
- 做一些 ajax 并使用 getJSON 返回一个承诺
- 在 AngularJS 中声明一个承诺,并带有命名的成功/错误回调
- 链承诺.all 与从上一个承诺返回的数组.all.
- 如何更好地停止一个承诺链并开始另一个承诺链
- rsvp.js 如何处理被拒绝的承诺和失败回调链
- 同时循环承诺,直到另一个承诺结束
- Javascript-Uncaught一个承诺被拒绝了,尽管它已经被拒绝了
- 关于承诺/A+规范,是一个从未被允许解决或拒绝的承诺
- 拒绝一个捆绑的承诺
- 问美元.当有一个被拒绝的承诺时,一切都解决了