我是JS的新手,也是Promises的新手。
假设我有一系列承诺:
//var challenge is created before all this
isUserInCooldown().then( function(hoursRemaining)
{
if (hoursRemaining > 0)
{
return Parse.Promise.error("You can't challenge 'cuz you're on cooldown.");
}
var objectsToSave = [];
//DO SOME STUFF TO THE OBJECTS
return Parse.Object.saveAll(objectsToSave);
}).then( function(list)
{
//DO SOME STUFF TO CHALLENGE
return challenge.save(null);
}).then( function(challenge)
{
return Parse.Promise.as(challenge);
},
function(error)
{
if (theSaveAllFailed) { return "Couldn't save all"; }
if (theSaveFailed) { return "Couldn't save the challenge"; }
//etc.
});
我正在重构一堆使用回调的代码,每个error: function(error) {}
都返回了一条自定义错误消息。我希望能够传递自定义错误消息,具体取决于链断开的位置。
我认为它与fail() or reject()有关,但我还没弄清楚如何。
我想知道:
1:如何返回我想要的自定义错误消息?
2:我是否正确使用了承诺(基于你在这里看到的内容?)
谢谢!
答案 0 :(得分:0)
df.iloc[[0,2,4], :]
来添加您怀疑的处理程序。虽然你的承诺可以按照书面形式运作,但它们可以整理起来:
.fail
应包含isUserInCooldown
检查,以便不会污染其他功能。 hoursRemaining > 0
不依赖于challenge.save
,则同时关闭它们并使用objectsToSave
会更快。Parse.Promise.when
或response.success
。 你在这里所做的事情是毫无意义的,因为我重申要证明一点:
response.error
啊,好多了:
.then(function(challenge){
return Parse.Promise.as(challenge);
}).then(function(challenge){
return Parse.Promise.as(challenge);
}).then(function(challenge){
return Parse.Promise.as(challenge);
});
或者,如果您没有使用云功能:
isUserInCooldown().then( function() {
return Parse.Object.saveAll(objectsToSave).fail(function(){
return "Couldn't save all";
});
}).then( function(){
return challenge.save().fail(function(){
return "Couldn't save the challenge";
});
}).then(response.success, response.error)