有没有办法在 .then() 块中设置数组的状态?
Is there a way to setState of an array in a .then() block?
`
- 我有一组点(城市、州)
- 我进行了一次提取调用以将我的点转换为(纬度和经度),因此我将结果推送到一个数组并尝试设置数组的 setState 但是当我 console.log(array) 我得到 [] .
`
if (pointsComplete) {
// for (let i = 0; i < pointsComplete.length; i++) {
for await (let x of pointsComplete) {
if (x.city !== "") {
fetch(
`https://singlesearch.alk.com/na/api/search?&query=${x.city} , ${x.state}&maxResults=1`,
{
method: "GET",
headers: {
"Content-Type": "application/json",
Authorization: trimble_key,
},
}
)
.then((response) => response.json())
.then((data) => {
pointsCoords.push({
Lat: data.Locations[0].Coords.Lat,
Long: data.Locations[0].Coords.Lon,
position: parseInt(x.position),
});
})
.finally(() => {
setPointsCoordsArray(pointsCoords);
});
}
}
}
这对我有用..
if (pointsComplete) {
let promises = [];
for (let x of pointsComplete) {
if (x.city !== "") {
promises.push(
fetch(
`https://singlesearch.alk.com/na/api/search?&query=${x.city} , ${x.state}&maxResults=1`,
{
method: "GET",
headers: {
"Content-Type": "application/json",
Authorization: trimble_key,
},
}
)
.then((response) => response.json())
.then((data) => {
pointsCoords.push({
Lat: data.Locations[0].Coords.Lat,
Long: data.Locations[0].Coords.Lon,
position: parseInt(x.position),
});
})
);
}
}
Promise.all(promises).then((data) => {
setPointsCoordsArray(pointsCoords);
console.log("______________");
});
}
`
- 我有一组点(城市、州)
- 我进行了一次提取调用以将我的点转换为(纬度和经度),因此我将结果推送到一个数组并尝试设置数组的 setState 但是当我 console.log(array) 我得到 [] . `
if (pointsComplete) {
// for (let i = 0; i < pointsComplete.length; i++) {
for await (let x of pointsComplete) {
if (x.city !== "") {
fetch(
`https://singlesearch.alk.com/na/api/search?&query=${x.city} , ${x.state}&maxResults=1`,
{
method: "GET",
headers: {
"Content-Type": "application/json",
Authorization: trimble_key,
},
}
)
.then((response) => response.json())
.then((data) => {
pointsCoords.push({
Lat: data.Locations[0].Coords.Lat,
Long: data.Locations[0].Coords.Lon,
position: parseInt(x.position),
});
})
.finally(() => {
setPointsCoordsArray(pointsCoords);
});
}
}
}
这对我有用..
if (pointsComplete) {
let promises = [];
for (let x of pointsComplete) {
if (x.city !== "") {
promises.push(
fetch(
`https://singlesearch.alk.com/na/api/search?&query=${x.city} , ${x.state}&maxResults=1`,
{
method: "GET",
headers: {
"Content-Type": "application/json",
Authorization: trimble_key,
},
}
)
.then((response) => response.json())
.then((data) => {
pointsCoords.push({
Lat: data.Locations[0].Coords.Lat,
Long: data.Locations[0].Coords.Lon,
position: parseInt(x.position),
});
})
);
}
}
Promise.all(promises).then((data) => {
setPointsCoordsArray(pointsCoords);
console.log("______________");
});
}