Ich habe eine Reihe von Versprechen, und ich versuche, im Inneren einer anderen dispatch.then Funktion neue Versprechungen in diesem Array zu schieben, aber es scheint, dass das Array immer außerhalb des Bereichs istBinding Variable auf redux Versand ActionCreator
load(params, auth) {
return dispatch => {
const { passage, versions, language_tag } = params
let promises = []
versions.forEach((id) => {
// get the version info, and then pass it along
dispatch(ActionCreators.version({ id: id })).bind(promises).then((version) => {
promises.push(dispatch(ActionCreators.passages({
id: id,
references: [passage],
versionInfo: {
local_abbreviation: version.abbreviation,
local_title: version.title,
id: version.id,
},
})))
})
})
//
promises.push(dispatch(ActionCreators.configuration()))
promises.push(dispatch(ActionCreators.byRef({ language_tag })))
console.log(promises.length)
return Promise.all(promises)
}
},
Ich habe ein paar verschiedene Ansätze versucht, wie zum Beispiel var that = this
direkt vor dem Versand innerhalb der Versionen loop, und was hier gezeigt wird, versuchen, .bind(promises)
auf den Versand zu verwenden.
provents.length ist immer 2, (wegen der zwei, die eigentlich unten geschoben werden). Ich kann Anweisungen innerhalb des .then
trösten, also weiß ich, dass es ausgeführt wird, aber die Versendungen enden nicht im Versprechungsarray.
Ich könnte sehr gut an die Versandfunktion in einer falschen Weise denken.
Jede Hilfe wäre willkommen!
Hey! Danke für die Antwort. Die Versendungen werden jetzt alle geschoben, nur dass es sagt, dass "Version" in den Passagenversand nicht definiert ist. Ich habe versucht, '.bind (version)' auch zu binden. – jacoballenwood
Binden Sie nichts, da es nicht funktioniert. Der obige Code geht klar davon aus, dass die Version das Versprechen des ersten Aktionserstellers ist. Das ist wahrscheinlich nicht der Fall. Also schauen Sie in "ActionCreators.version" nach dem Problem. Stellen Sie sicher, dass es ein "Versprechen" zurückgibt, und stellen Sie sicher, dass das Versprechen in das erwartete Versionsobjekt aufgelöst wird. – DDS
eigentlich habe ich falsch gesagt, dass die Version nicht definiert ist, es war etwas anderes in einer View-Datei! Das funktioniert super, danke! – jacoballenwood