让我说我在行动中调用一种调度方法:
exception 'yii\base\UnknownMethodException' with message 'Calling unknown method: yii\web\User::getProfile()' in ... ...
我的return dispatch(add_data(data)).then(function(response){console.log("Done")}
方法如下:
add_data
仅适用于export function add_data(data){
return (dispatch, getState) => {
for(var i in data){
var data = {'url': data[i]}
return dispatch(myApi({url: "some_url", method: "POST", data: data,}
)).then(response => {
console.log(response)
return response.json()
}).then(response => {
console.log(response)
return dispatch({response, type: types.ADD_DATA})
})
}
}
}
个数据。仅调度first
个数据。它是内部循环,我期望它来自循环的所有数据first
。
我怎样才能做到这一点?
谢谢
答案 0 :(得分:5)
只要return
,return
语句就会退出该函数。如果您不想从循环中间的函数返回,请不要在循环中间从return
返回。
您可以使用Promise.all(promises)
创建一个在所有子承诺解决后解决的承诺。您可以在创建数组时将promises收集到数组中,然后返回Promise.all(promises)
来代表它们:
export function add_data(data){
return (dispatch, getState) => {
var promises = [];
for (var key in data) {
var itemData = {'url': data[key]}
var promise = myApi({
url: "some_url",
method: "POST",
data: itemData
}).then(
response => response.json()
).then(response => {
dispatch({response, type: types.ADD_DATA})
})
promises.push(promise)
}
return Promise.all(promises)
}
}