我有一个像这样的数组
array =[ {message:'http://about.com'}, {message:'http://facebook.com'}]
我想循环该数组,在每个项目上我都会向服务器发出请求以获取opengraph数据,然后将数据保存回数组。这是我所期望的
array =[
{
message: { url:'http://about.com', title:'about'}
},
{
message:{ url:'http://facebook.com', title:'facebook'}
}
]
然后,当一切都完成了。我想用有效载荷调度一个动作是期望的数组。这是我做的
return dispatch => {
let array =[ {message:'http://about.com'}, {message:'http://facebook.com'}]
let quests = array
.map( (item) => {
axios.get(getOpenGraphOfThisLink + item.message)
.then( result =>{
item.message = (result.data)
return result
})
})
Promise.all(quests).then( () => {
console.log( 'modified', array)
dispatch({
type : constant.GET_POST_COLLECTION_SUCCESS,
payload: array
})
// this dispatch function sends my original array instead of modified one.
})
}
问题:代码中的调度功能会将我的原始数组发送给reducer而不是修改后的数组。我想调度发送新的修改后的数组。我认为应该,不是吗?
最佳答案
现在quests
变量只是由您的原始数组分配的,因为map
函数返回void,但是您需要将每个项目的承诺返回给quests
,因此只需添加return
关键字,这样您的代码是这样的:
let quests = array
.map( (item) => {
return axios.get(getOpenGraphOfThisLink + item.message)
.then( result =>{
item.message = (result.data)
return result
})
})