您好我是ES6的新手,我正在使用承诺链
我的承诺链中没有错误捕获。
let cost, stars;
getStarInfo(req.body.star_id).then( (star) => {
let stripe_object = new Stripe(req.body.stripe_token, cost);
return stripe_object.makepayment();
}).then( (payment) => {
console.log(1 ,payment);
return savePurchase(req.decoded._id, cost, stars, payment.id);
}).catch( (err) => {
res.json({'success' : false , 'err' : err , msg : 'Something went wrong please try again'});
});
我的savePurchase功能就像这样
function savePurchase( cost , stars, payment_id){
console.log("hello")
return new Promise( (resolve, reject) => {
var purchasedstars = new Stars({
user_id : user_id,
stars : stars,
money_earned : cost,
transaction_id : payment_id
});
console.log(purchasedstars)
purchasedstars.save(function(err , saved_doc){
console.log('save' , err , saved_doc)
if(err){
reject(err)
}else{
resolve(saved_doc);
}
});
});
}
在savePurchase
函数中,如果我的user_id
未定义,则承诺不会给我错误。它只是进入catch并给出空的错误对象。如何在函数中找出错误。?
答案 0 :(得分:1)
从savePurchase
返回新的承诺后,您将catch
与getStarInfo
链接,但不再与getStarInfo
承诺,因此您没有getEData(): Observable<any[]>
{
return this.af.list('/enquirydata').snapshotChanges();
}
承诺的错误处理程序。
答案 1 :(得分:0)
.then()
使用可选的第二个函数来处理错误
var p1 = new Promise( (resolve, reject) => {
resolve('Success!');
// or
// reject ("Error!");
} );
p1.then( value => {
console.log(value); // Success!
}, reason => {
console.log(reason); // Error!
} );
答案 2 :(得分:0)
定义自定义错误并拒绝。
purchasedstars.save(function (err, saved_doc) {
console.log('save', err, saved_doc)
if (err) {
reject({
err,
message: 'Some error message'
})
} else {
resolve(saved_doc);
}
});