[英]Having trouble returning more than one value from a function and assigning the returned values in a promise
我有一個返回兩個值的函數。 我正在嘗試返回數組中的值。
export function getSettingsConfig (selectedSetting, formSchema) {
debugger;
//gets selected setting config
fetch(`/ui/settings/${selectedSetting}`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Accept': '*/*'
},
})
.then(response => response.json())
.then(response => {
//maps config to form schema
let settingsConfig = response.data;
let newFormSchema = setNonDefaultFieldValues(settingsConfig, formSchema);
return [settingsConfig, newFormSchema]
})
.catch((err) => {
/* Todo - add better error handling here. */
console.log('Fetch Error :-S', err);
})
};
在我的componentDidMount()
,我調用了getSettingsConfig
函數並嘗試將返回的值分配給一個名為values
的數組。
componentDidMount() {
let general = {};
let values = [];
//gets selected setting form schema
getSettingsForms().then((response) => {
this.setState({settingsForms: response});
general = response[this.state.selectedSetting];
}).then(response => {
values = getSettingsConfig(this.state.selectedSetting, general);
console.log(values);
})
}
當我嘗試console.log()
這個返回值數組到控制台時,我得到undefined
。 知道我在我的功能中做錯了什么嗎? 為什么不返回值數組?
您必須使用 async await 等待承諾得到解決,然后使用變量值
您可以使用async
和await
解決您的問題
async componentDidMount() {
let general = {};
let values = [];
const response = await getSettingsForms()
general = response[this.state.selectedSetting]
values = getSettingsConfig(this.state.selectedSetting, general)
}
您必須在getSettingsConfig
中返回 promise 才能通過調用它來獲取其結果。
// ...
return fetch(`/ui/settings/${selectedSetting}`, {
// ...
您還必須解決承諾:
// ...
getSettingsForms().then((response) => {
this.setState({settingsForms: response});
general = response[this.state.selectedSetting];
// resolve the promise here
getSettingsConfig(this.state.selectedSetting, general).then((values) => {
console.log(values);
});
});
// ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.