gpt4 book ai didi

javascript - 异步 promise 没有获得正确的值(value)

转载 作者:行者123 更新时间:2023-11-30 14:25:38 25 4
gpt4 key购买 nike

function getProjects() {
return new Promise(function(resolve, reject) {

axios.get('url', {
auth: {
username: 'username',
password: ' '
}
}).then(function(response) {
let res = response.data.value;
for (let i = 0; i < res.length; i++) {
projects.push(res[i])
resolve(projects);
}
console.log(projects)
}).catch(function(error) {
console.log(error)
})
})
}

getProjects()
.then(function(proj) {
console.log('proj', proj)

function asnycItemAssignment() {
return new Promise(function(resolve, reject) {
for (let i = 0; i < proj.length; i++) {
axios.get(`url`, {
auth: {
username: 'username',
password: ' '
}
}).then(function(response) {
//console.log(response.data.value)
finalArr.push(response.data.value)
})
.catch(function(error) {
console.log(error)
})
}

resolve(finalArr)
})
}

asnycItemAssignment()
.then(function(res) {

console.log('res', res)

function flatten() {
return new Promise(function(resolve, reject) {

var myNewArray3 = [];
for (var i = 0; i < res.length; ++i) {
for (var j = 0; j < res[i].length; ++j) {

console.log('pushed', i, j, res[i][j])
myNewArray3.push(res[i][j]);
}
}

console.log('finalArr', myNewArray3)
resolve(myNewArray3)
})
}

flatten()
.then(function(value) {
console.log('val', value)
})

})

})
}

这是我正在尝试做的事情。

我正在尝试从 API 获取项目列表,将其存储到 projects 并将其解析为 Promise。然后,我再次尝试使用 projects 的名称并将其用于另一个 API,该 API 为我提供该项目中的数据。这会将其存储到 finalArr 中。这次我解决了 finalArr

finalArr 是对象数组的数组。像 [[{...}{...}][{...}]] 这就是为什么我想把它展平成像 [{...}, {...},{...},{...}].

但是,在我的 asnycItemAssignment 中,应该给我 finalArr 结果的 res 没有给我包含所有值的完整数组

代码比较乱,但感觉自己做对了。我做错了什么?

编辑

async function getData() {
let getProject =
await axios.get('url', {
auth: {
username: 'username',
password: ' '
}
})

let projects = await getProject.data.value;

projects.map(project => {
let ItemAssignment =
axios.get(`url`, {
auth: {
username: 'username',
password: ' '
}
})

let values = await ItemAssignment.data.value
console.log(values)
})

console.log('pr', projects)
}

getData()

最佳答案

我真的认为您应该阅读有关 async/await 的内容。当您依赖一个异步操作的结果然后执行另一个操作时,它使代码更具可读性。下面是一些伪代码,以便您继续:

async function go() {
try {
const projects = await getProjects();
projects.map(project => {
const itemAssignments = await asnycItemAssignment(project);
const flattened = await flatten(itemAssignments);
console.log(flattened);
}
} catch (e) {
console.error(e); // 💩
}
}

此外,一般性地了解如何使用 axios:

async getData() {
return await axios(...);
}

然后您可以使用 getData,例如:

const r = await GetData();

关于javascript - 异步 promise 没有获得正确的值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51992103/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com