理解承诺链

我在NodeJS项目中使用Promise,并希望更好地理解Promise.chains。

我有一个暴露的function:

主要库函数,我希望我的用户调用。 它会返回一个承诺,然后用户需要处理的决心和拒绝的。

主库函数将调用许多其他库函数,我想要链接。 所以每个函数都会返回一个这样的承诺:

mainLibraryFunction = function (arguments...) { return this.firstLibraryFn().then(secondLibraryFn).then(thirdLibraryFn)... } 

这些都将返回一个承诺,可以拒绝或解决。 我想要的是,如果任何库函数拒绝,然后将拒绝传递到下一个函数,我想返回的MainLibraryFunction的拒绝。 因为否则我需要实现每个库函数的error handling。 因为他们每个人都会得到承诺作为参数,所以我需要检查每个函数,那么我得到解决或拒绝的承诺作为参数。 然后我需要通过所有的函数传递被拒绝的参数,直到最后的函数可以返回它的MainLibraryFunction。 这不是明智的。

那么处理这个问题的最佳做法是什么呢? 我应该在链条的末尾添加捕获吗? 我听说如果我加了一个尾巴,即使有人会拒绝,也应该打破这个链条。 然后从catch,我可以返回Promise.reject()出MainLibraryFunction。

onFulfilled方法接受两个参数: onFulfilledonRejected 。 如果你不提供一个onRejectedcallbackonRejected ,那么这个特定的onRejected将不会被调用,并且这个链将会落到实现onRejected .catch的下一个处理函数中。

 Promise.reject() .then(() => console.log('onFulfilled 1')) .catch(() => console.log('catch 1')); // will get called Promise.reject() .then( () => console.log('onFulfilled 2'), () => console.log('onRejected 2') // will get called ) .catch(() => console.log('catch 2')); // will not get called