在实现承诺时,我需要执行go()
方法,即使有错误也是如此。(我正在与后端API交谈,当我得到服务器响应时,我需要做一些UI工作,即使是404)。
现在我这样做:
Try.method().then(()=>{
go();
}).catch({
go();
})
有没有更好的方法来避免重复方法调用?
发布于 2015-09-10 20:56:44
有一个finally()
回调,无论结果如何都会被调用:
Try.method().then(()=>{
go();
}).catch({
go();
}).finally({
go();
});
由于您使用的是似乎不支持finally()
回调的babeljs,因此您可以使用下面的代码:
Try.method().catch(()=>{
go();
}).then({
go();
})
如果存在错误,则首先捕获错误,否则将照常执行.then()
。
发布于 2015-09-10 21:08:23
有没有更好的方法来避免重复方法调用?
不确定是否正确地解释了上述问题部分?尝试定义一个链接到.then(go, go)
调用末尾的单独api
var go = function(data) {
console.log("go", data)
};
var p = function(args, val) {
return Promise[args](val)
};
p("resolve", 1).then(go, go);
p("reject", 0).then(go, go);
如果可以使用jQuery,可以尝试使用deferred.always()
var go = function(data) {
console.log("go", data)
};
var p = function(args, val) {
return $.Deferred()[args](val)
};
p("resolve", 1).always(go);
p("reject", 0).always(go);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
https://stackoverflow.com/questions/32502508
复制相似问题