我的承諾回傳如下所示的回應物件:
response:
Person: Array(3)
0: {Name: 'PersonA', Data: Array(2)}
1: {Name: 'PersonB', Data: Array(3)}
2: {Name: 'PersonC', Data: Array(4)}
這是用于獲取回應的函式
public getData = (): Promise<any> => {
const personData = `http://url/get/someperson/data/personData.json`;
return (
fetch(personData , { method: "GET" })
.then((response) =>
response.json().then((response) => ({
response,
}))
)
.catch((e) => console.log(e))
);
};
但是,我想獲取所有 Person 名稱并將它們填充到下拉串列中。但是,我首先只想獲取 Person name 的所有值并將它們填充到一個變數中。
要做到這一點,如果我嘗試這樣的事情 val 總是未定義的
const val = getData().then((personNames: any): void => {
(personNames.Person);
});
以我有限的理解,非常感謝任何有關解決此問題的建議或指導。
提前致謝!
uj5u.com熱心網友回復:
看起來您的函式名稱錯誤。它應該是getData而不是personData。
此外,如果您想回傳分配給變數的值val,您可以嘗試:
const val = await getData();
或者,如果您仍想使用then/catch:
let val;
getData().then((personNames: any) =>
{
val = personNames.Person; // should assign the value there
})
uj5u.com熱心網友回復:
更新
對不起,我錯過了回傳型別的可能性。catch 案例只回傳沒有映射的 void 型別。所以我只是把值設定隨后。我假設回應是串列。
let val
const getData = () => {
const personData = `http://url/get/someperson/data/personData.json`;
return fetch(personData, { method: 'GET' })
.then((response) =>
response.json().then((response) => {
val = response.map((person: any) => person.Name)
})
)
.catch((e) => {
console.log(e);
});
};
==============================
我更新了你的代碼。您應該修改回應并將其回傳。
const val = getData().then((personList: any): [] => {
return personList.map((person: any) => person.Name);
});
OR one liner expression below
const val = getData().then((personList: any): []=> personList.map((person: any) => person.Name);
);
uj5u.com熱心網友回復:
好的,這就是我必須做的才能獲得人名值。
const getPersonVal = async (): Promise<void> => {
const personVal = await getData();
console.log(personVal.response.Person.map((personName: any) => personName.Name));
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/513514.html
標籤:反应打字稿反应式承诺
