在下面的Alt操作代码中,如何在addCharacter成功后调用getCharacters()?基本上我是在将新记录保存到数据库后尝试刷新字符列表。
getCharacters() {
requestPromise('http://localhost:3100/api/characters')
.then((res) => {
console.log("Getting Characters");
var opdata = JSON.parse(res);
this.actions.getCharactersSuccess(opdata.characters);
}).catch((err) => {
console.log('error:', err);
this.actions.getCharactersFail(err)
})
}
addCharacter(data) {
var options = {
method: 'POST',
uri: 'http://localhost:3100/api/characters/add/',
json: true,
body: {
name: data.charName,
allegiance: data.charAllegiance,
},
};
requestPromise(options)
.then((res) => {
// How can I recall getCharacters() from here
}).catch((err) => {
console.log('error:', err);
})
}
商品
getCharactersSuccess(res) {
this.setState({
characters: res
})
}
答案 0 :(得分:0)
您只需要调用getCharacters函数即可。您可以通过this.getCharacters()
addCharacter(data) {
var options = {
method: 'POST',
uri: 'http://localhost:3100/api/characters/add/',
json: true,
body: {
name: data.charName,
allegiance: data.charAllegiance,
},
};
requestPromise(options)
.then((res) => {
return this.getCharacters();
}).catch((err) => {
console.log('error:', err);
})
}
答案 1 :(得分:0)
这看起来不对。如果你使用像flux或redux这样的架构会更好。你可以采取任何方式购买只需拨打return this.getCharacters();
。其中引用了类中的getCharacters()函数。您错过的关键点是返回此。,它选择了正确的引用。当您在promise范围内创建promise时,会发生错误,但您不会从该Promise范围返回任何内容。因此返回将解决您的问题。
addCharacter(data) {
var options = {
method: 'POST',
uri: 'http://localhost:3100/api/characters/add/',
json: true,
body: {
name: data.charName,
allegiance: data.charAllegiance,
},
};
requestPromise(options)
.then((res) => {
return this.getCharacters();
}).catch((err) => {
console.log('error:', err);
})
}