Я использую Promises в проекте NodeJS и хотел бы лучше понять Promise.chains.Понимание цепей обещаний
У меня есть по одной открытой функции:
Основная функция библиотеки, что я хочу, чтобы мои пользователи позвонить. Он вернет обещание, и тогда пользователям необходимо будет решить проблему и отклонить ее.
Эта функция Главной библиотеки вызовет многие другие библиотечные функции, которые я хочу связать. Таким образом, каждая из этих функций будет возвращать обещание так:
mainLibraryFunction = function (arguments...) {
return this.firstLibraryFn().then(secondLibraryFn).then(thirdLibraryFn)...
}
Каждый из них будет возвращать обещание, которое может быть либо отклонить или решить. Я бы хотел, чтобы, если какая-либо из функций библиотеки отклоняется, вместо этого, передавая отказ следующей функции, я хотел бы вернуть отклонение от функции MainLibraryFunction. Потому что в противном случае мне нужно реализовать обработку случая ошибок для каждой из функций libraryfunctions. Поскольку каждый из них получит обещание в качестве аргумента, мне нужно будет проверить каждую из функций, которые я получил, или отклонил обещание как paramater. Затем мне нужно будет передать этот отклоненный параметр через все функции до тех пор, пока последняя функция не сможет вернуть его из функции MainLibraryFunction. Это было бы неразумно.
Итак, какова была бы оптимальная практика? Должен ли я добавить улов в конце цепи? Я слышал, если я добавлю улов к концу, он должен сломать цепочку, даже если кто-то из них отклонит. Затем из улова я могу вернуть Promise.reject() из функции MainLibraryFunction.
Если вы не обрабатываете ошибку, то она будет просто возвращена из функции и может быть уловлена вызывающим устройством с помощью .catch. Если обещание отклонено, то последующие вызовы будут вызываться только в том случае, если у них есть обработчик ошибок, например. [...] '- обратите внимание на parens – ndonohoe
NB: это должно быть 'return this.firstLibraryFn(). then (...)() '' после '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' – Alnitak
Спасибо, я отредактировал его, чтобы исправить –