Javascript 理解承诺链
我在NodeJS项目中使用Promises,希望更好地理解Promise.chains 我有一个公开的功能: 我希望用户调用的主库函数。它将返回一个承诺,然后用户需要处理解析和拒绝 这个主库函数将调用许多其他库函数,我想链接这些函数。因此,这些函数中的每一个都将返回如下承诺:Javascript 理解承诺链,javascript,node.js,promise,es6-promise,Javascript,Node.js,Promise,Es6 Promise,我在NodeJS项目中使用Promises,希望更好地理解Promise.chains 我有一个公开的功能: 我希望用户调用的主库函数。它将返回一个承诺,然后用户需要处理解析和拒绝 这个主库函数将调用许多其他库函数,我想链接这些函数。因此,这些函数中的每一个都将返回如下承诺: mainLibraryFunction = function (arguments...) { return this.firstLibraryFn().then(secondLibraryFn).then(third
mainLibraryFunction = function (arguments...) {
return this.firstLibraryFn().then(secondLibraryFn).then(thirdLibraryFn)...
}
每一个都将返回一个承诺,可以是拒绝,也可以是解决。我想要的是,如果任何库函数拒绝,那么将拒绝传递给下一个函数,我希望从MainLibraryFunction返回拒绝。因为否则我需要为每个Library函数实现错误案例的处理。因为它们中的每一个都将获得promise作为参数,所以我需要检查每个函数,这是我得到了解析还是拒绝了promise作为参数。然后,我需要将被拒绝的参数传递给所有函数,直到最后一个函数返回MainLibraryFunction。这是不明智的
那么,处理这个问题的最佳做法是什么?我应该在链子的末端加上钩环吗?我听说如果我在末端加上一个钩子,即使有人拒绝,它也会打破链子。然后从catch中,我可以从MainLibraryFunction返回Promise.reject()。这个
方法接受两个参数:oncompleted
和onRejected
。如果不提供onRejected
回调,则不会调用此特定的。然后该链将转到实现onRejected
或的下一个处理程序
Promise.reject()
.然后(()=>console.log('on1'))
.catch(()=>console.log('catch 1'));//会接到电话的
承诺,拒绝
.那么(
()=>console.log('on2'),
()=>console.log('onRejected 2')//将被调用
)
.catch(()=>console.log('catch 2'));//不会被调用
如果不处理该错误,则该错误将从函数中返回,调用方可以使用.catch捕获该错误。如果一个承诺被拒绝,那么后续的then调用只有在它们具有错误处理程序(例如PROMITE)时才会被调用。then(SUCCESS Fn,failureFn)NB:应该是返回这个。FIRSTLIBARYFn()。然后(…)
-注意parensThanks,我编辑它以更正它值得注意的是任何。then()如果.catch
没有重新拒绝承诺,则将调用.catch
后的。这是从错误中恢复的好方法。换句话说,您在链中任何位置插入的任何错误处理程序(onRejected
或onRejected
)都将捕获到链中该点的错误,之后,链的执行将一如既往地继续。