JavaScript promise.所有axios请求都不能正常工作

bvuwiixz  于 2023-08-04  发布在  iOS
关注(0)|答案(2)|浏览(148)

我试图用这段代码来做一堆axio get调用:

console.log("getting here")
const promises = Data?.stuff.map(async(id: any) => {
      axios.get('http://127.0.0.1:8080/api/v1/stuff/' + id)
        .then(response => {
          console.log(response.data)
          return response.data;
        });
      const tempLesson: any = await Promise.all(promises);
      console.log("never getting here")

字符串
但是它直到结束才执行。有什么问题吗?

sg3maiej

sg3maiej1#

Promise.all(promises)应该在.map()函数之外等待。Promise.all()所做的是接受一个promises数组(在本例中是一个Axios请求数组),并且仅当数组中的所有promises都已解决,或者有一个已拒绝时才进行解决。
所以,如果你想这样做:

const promises = Data?.stuff.map((id: any) => {
    return axios.get('http://127.0.0.1:8080/api/v1/stuff/' + id)
        .then(response => {
          console.log(response.data);
          return response.data;
        });
});
    
Promise.all(promises)
    .then((results) => {
        console.log("All promises resolved");
        console.log(results);
    })
    .catch((error) => {
        console.log("A promise rejected with error", error);
    });

字符串
就这些了

zbq4xfa0

zbq4xfa02#

您的代码缺少return语句和右括号
您以前的代码不应编译。我不知道第一个console.log是怎么运行的。

console.log("getting here")
const promises = Data?.stuff.map((id: any) => { // Removed async
    // Missing return statement
    return axios.get('http://127.0.0.1:8080/api/v1/stuff/' + id)
        .then(response => {
            console.log(response.data)
            
            return response.data;
        })
}) // Missing }) here

const tempLesson: any = await Promise.all(promises);
console.log("getting here")

字符串

相关问题