【发布时间】:2019-01-31 03:24:25
【问题描述】:
async function getData() {
const getProject = await axios.get('url', {
auth: {
username: 'username',
password: 'pw'
}
});
const projects = getProject.data.value;
const promises = projects.map(project =>
axios.get(`url`, {
auth: {
username: 'username',
password: 'pw'
}
})
);
const results = await axios.all(promises)
const KPIs = results.map(v => v.data.value);
}
我想做的是:
获取 axios 调用以获取项目名称。
使用这些获取的名称来调用多个 axios 调用。这应该会给我该项目的一些数据。
当我进行第二次 axios 调用时,有一些 API 调用无法正常工作,因为该项目中不存在数据。这是故意的。但它会因为给我 404 错误而中断,并且不会到达const results = await axios.all(promises) 行。
我希望它在它不存在时跳过它,只从存在的那个中调用它并将获取的数据存储到KPIs。我该怎么做?
编辑
第一个 axios 调用返回一个对象数组
例如)
{id: "id...", name: "Javelin", url: " .visualstudio.com/_apis/projects/6a93eab2-4996-4d02-8a14-767f02d94993", state: "wellFormed", revision: 99, …}
类似的东西。所以,我实际上只是得到了这个对象的.name 并将其放入我的网址中,例如:
axios.get({id}.extmgmt.visualstudio.com/_apis/ExtensionManagement/InstalledExtensions/{id}/..../${project.name}_test/Documents
【问题讨论】:
-
您可以将
axios.get调用包装在另一个不会在axios.get被拒绝时被拒绝的承诺中。 -
我该怎么做?你能帮我做吗?
-
好的,请给我一秒钟写下来
-
太棒了。我真的很感激!
-
@RyanSearle 我也是这么想的,所以我怀疑有没有更好的方法。
标签: javascript asynchronous promise axios