Это не обязательно антипаттерн, но многое зависит от того, зачем вы это делаете.
Может быть веская причина для разрыва цепи и запуска новой, но если вы обнаружите, что делаете этослишком часто, тогда что-то не так, и, вероятно, вам следует переосмыслить свой поток.
Я вижу две распространенные причины, по которым люди склонны начинать новую цепочку
1. Обработчик в какой-то момент во время создания цепочкирешение, основанное на условии, и у каждой ветви есть свой способ работы.На данный момент совершенно правильно начать новую цепочку, но я бы создал новый метод, который возвращает обещание.Следующий обработчик в цепочке должен знать о том, что он может получать разнородные данные
NewPromise()
.then( res => {
if (someCond) {
return OtherPromise(args)
}
....
return obj
})
.then( res => {
//this promise must be aware that res may be heterogeneous
})
2. Во время цепочки обработчик получает некоторую информацию, которую вы не можете легко распространить по цепочке.Например, когда вам нужны 2 разные части информации, поступающей из БД, и вам нужно оба в конце, чтобы выполнить работу.
User.findById(uid1)
.then(user1 => {
return User.finById(uid2)
})
.then(user2 => {
// at this point user1 is not available any more
})
Решением для этого является наличие переменной вне цепочки, а неначать новую цепочку
var user1
User.findById(uid1)
.then(user => {
user1 = user
return User.finById(uid2)
})
.then(user2 => {
// at this point user is available and has the value of user1
})