Я использую обещание отправить асинхронное действие в реакции.Я просто хочу изменить свойства объекта.Функция работает.Если я заключаю код в обещание и после выполнения Promise().then
работает, но если я выполняю myFunction(params).then()
, then is not called
- вот моя функция.(Рекурсивно):
export function setValue(propertyPath, value, obj) {
console.log("setting the value")
return new Promise((resolve, reject) => {
// this is a super simple parsing, you will want to make this more complex to handle correctly any path
// it will split by the dots at first and then simply pass along the array (on next iterations)
let properties = Array.isArray(propertyPath) ? propertyPath : propertyPath.split(".")
// Not yet at the last property so keep digging
if (properties.length > 1) {
// The property doesn't exists OR is not an object (and so we overwrite it) so we create it
if (!obj.hasOwnProperty(properties[0]) || typeof obj[properties[0]] !== "object") obj[properties[0]] = {}
// We iterate.
return setValue(properties.slice(1), value, obj[properties[0]])
// This is the last property - the one where to set the value
} else {
// We set the value to the last property
obj[properties[0]] = value
console.log("modified object")
console.log(obj)
return resolve(obj)
}
}
)
}
export function performPocoChange(propertyPath, value, obj) {
console.log("we are indeed here")
return (dispatch) => {
setValue(propertyPath, value, obj).then((poco) => {
console.log("poco is here")
console.log(poco)
dispatch(changePoco(poco))
})
}
}
консоль показывает «мы действительно здесь», но не «Poco is here», и changePoco (то есть действие) не вызывается.Однако, если я сделаю then
сразу после скобок обещаний и журнала, он покажет журнал.
Я не эксперт в JS.Я очень стараюсь, и это действительно получило меня.Есть идеи?
Большое спасибо заранее