gpt4 book ai didi

node.js - 问题是,在违背 promise 后,获得正确的 promise 失败的功能无法运行

转载 作者:太空宇宙 更新时间:2023-11-03 22:01:27 26 4
gpt4 key购买 nike

我试图拒绝一个 promise ,它似乎有效,但并不完全符合预期。

Parse.Promise.as(1).then(function() {
var vendor = user.get('vendor');
if (vendor)
return vendor.fetch();
else
return Parse.Promise.error("No vendor found");

}, function() {
//specific promise error for this particular promise
res.redirect('/vendor/signup');
}).then(function(result) {
var vendor = result;
res.render('vendor/dashboard.ejs', {
'user': user,
'vendor': vendor
});
}).fail(function(error) {
//general catch all error controller
res.render('error.ejs', {
'error': error
});
});

如果 promise 在尝试加载供应商的第一部分失败,我希望重定向错误。相反,它会陷入失败的结局。执行此操作的正确方法是什么?传递给 then 的第二个函数不是应该是它所落入的函数(如果存在的话)吗?

最佳答案

.then 的基本签名是 .then(onFulfilled,onRejected) - 这意味着它接受调用它的 Promise 并根据解析调用处理程序那个 promise :

 p.then(function onFulfilled(){
// this gets called only when p fulfills.
},function(){
// this gets called only when p is rejected, if the above onFulfilled
// rejects, this doesn't get called, instead it'll propagate
});

通常,在代码段中附加一个 .then(null,function(){ 处理程序;e 异常:

 p.then(function onFulfilled(){
// this gets called only when p fulfills.
}).then(null,function(){ // <- note the .then
// this gets called only when the above promise _including_ the onFulfilled
// handler rejects. Since now the code is `.then`ing the result of the promise
// created by the first .then handler.
});

另外 - 为了清楚起见,在支持它的库中使用 .catch ,不幸的是,这不是 parse.com 的 promise 。

关于node.js - 问题是,在违背 promise 后,获得正确的 promise 失败的功能无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22827150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com