我试图使用promise.all执行多个api调用,但出于某种原因,它引发了以下错误
TypeError:#不可迭代
我的承诺相当简单(这可能是我第二次使用Promise.all)
componentWillMount() {
const id = this.props.location.pathname
let axiosHome = axios.get('/home')
let axiosUserData = axios.get("/profile/" + id)
Promise.all(axiosHome, axiosUserData).then(response => {
console.log(response)
}).catch(error => {
console.log(error)
})
}
问题:我知道为什么我会犯这个错误吗?另外,有人还能解释一下什么时候我们用“解决”关键字和“承诺”吗?
发布于 2018-10-28 18:41:12
Promise.all
接受一个参数,这是一个Promise
__s数组--随后的参数被丢弃。因此,输入一个数组,而不是:
Promise.all([axiosHome, axiosUserData])
.then(...
什么时候我们用“承诺”关键字来解决问题?
resolve
不是关键字,它只是构造Promise
时使用的常规函数名
const prom = new Promise((resolve, reject) => {
// do some asynchronous stuff
if (ok) resolve();
else reject();
});
当像这样显式地构造Promise
时,调用resolve()
来解决承诺。(当然,可以将函数参数命名为任何东西,不一定要调用resolve
)
发布于 2020-09-20 18:58:12
Promise.all()接受方法数组(异步),数据可以作为数组分配给变量
示例:
let [axiosHomeData , axiosUserData] = await Promise.all([axiosHome, axiosUserData]);
https://stackoverflow.com/questions/53038032
复制相似问题