Из учебника я следующий код
createShoppingList: (store, shoppinglist) => {
return api.addNewShoppingList(shoppinglist).then(() => {
store.dispatch('populateShoppingLists')
}, () => {
store.commit(types.ADD_SHOPPING_LIST, shoppinglist)
})
}
обратите внимание на запятую после блока.then()
Это эквивалентно цепочке.then()?
createShoppingList: (store, shoppinglist) => {
return api.addNewShoppingList(shoppinglist)
.then(() => {
store.dispatch('populateShoppingLists')
})
.then(() => {
store.commit(types.ADD_SHOPPING_LIST, shoppinglist)
})
}
или это только блок внутри.then()? лайк:
return api.addNewShoppingList(shoppinglist)
.then(
() => { store.dispatch('populateShoppingLists')},
() => { store.commit(types.ADD_SHOPPING_LIST, shoppinglist) }
)
спасибо за отзыв
нет
.then(resolved, rejected)
не равна
.then(resolve)
.then(rejected)// :/
его довольно похоже на:
.then(resolved)
.catch(rejected)
(Тем не менее, разница в том, что теперь отклонение внутри будет уловлено, а верхняя версия не будет удалена)
.catch(rejected).then(resolved)
, но не полностью. Вы заметите разницу, если ваш метод resolved()
выдаст еще одну ошибку; rejected
не поймает это здесь.
Нет,
.then(resolved, rejected)
больше похожа
.catch(rejected)
.then(resolved)
но не полностью, как с .then(resolved, rejected)
результат этой функции перенаправляется на следующее обещание и никогда друг к другу.
var resolved = value => 'resolve(${value})';
var rejected = err => 'catched(${err})';
var throwing = () => { throw "thrown Error" };
Promise.resolve(42)
.then(resolved, rejected)
.then(v => console.log("then(a,b) => ", v));
Promise.reject(42)
.catch(rejected)
.then(resolved)
.then(v => console.log("catch(b).then(a) => ", v));
//and that why .then(a,b) ain't like .then(a).catch(b)
Promise.resolve(42)
.then(throwing, rejected)
.then(v => console.log("then(throw,b) => ", v))
.catch(err => console.log("then(throw,b) => ", err));
Promise.resolve(42)
.then(throwing)
.catch(rejected)
.then(v => console.log("then(throw).catch(b) => ", v))
.catch(err => console.log("then(throw).catch(b) => ", err));
.as-console-wrapper{top:0;max-height:100%!important}