我无法通过async
调用将值返回到最外层函数。该对象是React-Simple-Chatbot的一个步骤的一部分,我试图使用验证器函数。它接受一个值,来自用户输入的string
。我需要将true或string
返回给验证器以使其工作。我无法弄清楚如何获取我的函数和/或回调以将数据返回给验证器。
let p;
{
id: 'productTypes',
user: true,
validator: function(value) {
response(value, this.id, function(answer){
return p
})
},
trigger: ({value}) => value.toLowerCase() === 'back' ? 'back' : 'productDetails'
}
function response(value, id, callback) {
getData(value, id).then(x => p = x.data).then(x => callback(x))
}
function getData(value, id) {
return axios.get('http://localhost:8085/chatbot', {params: {value: value, func: id }})
}
我还尝试使用async/await
解决此问题。这样做的问题是返回p
的{{1}}的初始值为validate
,但对undefined
函数的后续调用有效。我不确定为什么validate
在return p
之前运行。
response(value, this.id)
答案 0 :(得分:0)
async/await
模式不会return
来自response
函数调用的值,并且await
调用response()
validator()
的结果let p;
async function validator(value) {
try {
await response(value);
console.log("validator:", {p});
} catch(err) {
throw err
}
return p;
}
async function response(value, id) {
try {
let data = await getData();
p = data.data;
} catch(err) {
throw err
}
return p;
}
function getData(value, id) {
return Promise.resolve({
data: 123
})
}
validator()
.then(value => {
console.log("then:", {p});
// do `trigger` stuff with p
})
.catch(err => console.error(err));
WriteTeams() {
return teams_array.map(function(Teams, i){
return(
<View key={i}>
<TouchableHighlight onPress={() =>
this.props.navigation.navigate('TeamDetail')}>
<Text>{Teams.TeamName}</Text>
</TouchableHighlight>
</View>
);
});
}
render(){
<ScrollView>
<View>
<View>
{this.WriteTeams()}
</View>
</View>
</ScrollView>
}
}
const teams_array = [
{ TeamName: "Some team"},
{ TeamName: "Some team2"}
]