gpt4 book ai didi

javascript - 在 promise 中循环数组并将其作为参数传递给下一个 promise 后,如何在链接时返回一个值?

转载 作者:行者123 更新时间:2023-11-30 11:12:39 26 4
gpt4 key购买 nike

我正在尝试从端点获取数据。尽管如此,除了我认为我犯了一个我不太了解这个特定结构的小错误外,一切正常。

我在 .then() 中使用 forEach() 现在我想将 forEach 的返回值传递给下一个链接的 .then() promise ,而不是在另一个 .then 中创建一个新的 .then() ()

const url = 'https://jsonplaceholder.typicode.com/users';
/*r = response, v = value, e = error, n = names array, iv = item value */

axios.get(url)
.then( r => r )
.then( r => r.data )
.then( r => r.map( v => v ) )
.then( r => {const n = r; return n} )
.then( n => { n.forEach( v => v) } )
.then( /* HERE I WANT TO IMPLEMENT THE RETURNED VALUE FROM THE PREVIOUS FOREACH() FUNCTION*/ )
.catch( e => e.respose ? console.log(e.response.status) : console.log(e.message) )

代码已更新

axios.get(url)
.then( response => response.data )

/* Creates a copy from the responded array */
.then(
response => {
const new_array = response.map( value => value )
return new_array;
}
)

/*
Gets the name property for each value inside the copied array and stores it into a new array called names_array
*/
.then(
new_array => {
const names_array = [];
new_array.forEach(
item => names_array.push(item.name)
)
return names_array
}
)
.then(
names => {
console.log(names.sort( (a, b) => b-a) )

}
)

/* Error handling */
.catch( e => e.respose ? console.log(e.response.status) : console.log(e.message) )

最佳答案

如果您想要的只是来自响应对象的名称数组,那么在链中使用不必要的 then() 会使整个事情过于复杂。

创建 const new_array = response.map( value => value ) 是一个毫无意义的步骤,它只是无缘无故地复制原始数组

您只需要一个简单的 map() 即可在第一个 then() 中返回名称

const url = 'https://jsonplaceholder.typicode.com/users';

const getNames = () => axios.get(url)
.then(res => res.data.map(o => o.name).sort((a, b) => a.localeCompare(b)))

getNames().then(sortedNames => console.log(sortedNames))
<script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.min.js"></script>

关于javascript - 在 promise 中循环数组并将其作为参数传递给下一个 promise 后,如何在链接时返回一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53021843/

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