我希望在承诺成功或失败后执行相同的操作,即我想为成功和错误处理程序执行相同的操作,然后继续将承诺的结果发送给合适的erroe /成功处理程序。无论承诺履行如何执行相同的操作?
var pleaseWaitPromise = playAudioAsync("please wait");
myLongRunningPromise().then(function tempSuccessHandler(result) {
pleaseWaitPromise.cancel();
return result;
}, function tempErrorHandler(error) {
pleaseWaitPromise.cancel();
return WinJS.Promise.wrapError(error);
}).done(function realSuccessHandler(result) {
console.info(result);
}, function realError(error) {
console.error(error);
});
有没有更优雅的方式来阻止pleaseWaitPromise
,这也可能是一个函数调用,而不是一个承诺(如clearInterval
)
你不会说你正在使用的是什么Promise库,但是对于蓝鸟承诺库,无论承诺如何实现,你都可以使用'.finally()'来执行你想运行的动作。有关详细信息,请参见[https://github.com/petkaantonov/bluebird/blob/master/API.md#finallyfunction-handler---promise]。如我认为很明显的标签所描述的那样,WinJS是 – jfriend00 2014-12-05 18:47:33
。 “最后”看起来只能在承诺链的最后。我希望它在链条的中间。 – philk 2014-12-05 23:11:11
对于我们这些不认识winJS的人来说,我不清楚它是否有自己的诺言库(即使我在网上查到它)。如果你想从更大的社区获得帮助,最好在你的问题上更具体。像.finally()这样的所有非标准方法都是特定于库的,所以你必须看看winJS在这方面的作用。 – jfriend00 2014-12-05 23:12:36