我正在嘗試遍歷物件陣列并使用該物件的值呼叫我的 API。然后登錄控制臺。我的 API 正在回傳所需的值,但輸出是這樣的:
[ Promise { <pending> }, Promise { <pending> } ]
我的功能:
async function geoEncode() {
const clients = [
{
nome: "John",
address: "Jardim Planalto Sinibaldo Cassino 33",
},
{
nome: "Joseph",
address: "R. Afrizia Martins Sanacato - Jardim Natalia",
},
];
const baseUrl = "https://api.tomtom.com";
const endPoint = "search/2/geocode";
const format = ".json";
const apiKey = "Hq2eTTQvtJRna5MMAsAsARlsQCxv5XjR";
const clientsPositions = clients.map(async (client) => {
const address = client.address;
const position = await axios
.get(`${baseUrl}/${endPoint}/${address}${format}/?key=${apiKey}&limit=1`)
.then((response) => response.data.results[0].position)
.catch((error) => error.detailedMessage);
return position;
});
return clientsPositions;
}
geoEncode().then((result) => console.log(result));
uj5u.com熱心網友回復:
您正在向 API 發出多次呼叫,從而創建多個承諾。您在控制臺中看到的是這些承諾物件的陣列。您需要撰寫如下代碼以等待它們全部完成。
...
Promise.all(geoEncode()).then((values) => {
console.log(values);
});
...
uj5u.com熱心網友回復:
async function geoEncode() {
const clients = [
{
nome: "John",
address: "Jardim Planalto Sinibaldo Cassino 33",
},
{
nome: "Joseph",
address: "R. Afrizia Martins Sanacato - Jardim Natalia",
},
];
const baseUrl = "https://api.tomtom.com";
const endPoint = "search/2/geocode";
const format = ".json";
const apiKey = "Hq2eTTQvtJRna5MMAsAsARlsQCxv5XjR";
const clientsPositions = Promise.all(
clients.map(async (client) => {
const address = client.address;
const position = await axios
.get(
`${baseUrl}/${endPoint}/${address}${format}/?key=${apiKey}&limit=1`
)
.then((response) => response.data.results[0].position)
.catch((error) => error.detailedMessage);
return position;
})
);
return clientsPositions;
}
geoEncode().then((result) => console.log(result));
Promise.All() 確保所有同步代碼的陣列執行成功,并回傳決議為結果陣列的單個promise。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/399370.html
標籤:javascript 节点.js 异步 公理
上一篇:將陣列轉換為物件
