Der Code funktioniert, aber ich frage mich, ob ich über vielversprechende bin.Bin ich über mit dem folgenden Code versprechen?
Ich habe diese Redux Aktion
import Promise from 'bluebird';
const uploadAsynch = Promise.promisify(api.upload);
uploadFiles : function(data, dispatch){
var data = {
ep:"EP_UPLOAD",
payload: {
files: data.files,
profile: data.profile
}
}
uploadAsynch(data).then((result)=>{
dispatch({type: FILES_UPLOADED})
});
},
api.upload ist die folgende
import axios from 'axios';
upload : function(data, callback){
var files = new FormData();
for(var i=0; i<data.payload.files.length; i++){
files.append('files', data.payload.files[i], data.payload.files[i].name);
}
axios.post(apiEndpoints[data.ep], files, {
headers: {
'accept': 'application/json',
'Accept-Language': 'en-US,en;q=0.8',
'Content-Type': `multipart/form-data; boundary=--*`,
}
})
.then((response) => {
callback(null, response)
}).catch((error) => {
callback(error)
});
},
So frage ich mich. Wenn Axios ein auf Versprechen basierender Anforderungs-Client ist, ist es richtig, ihn mit bluebird in der Aktion zu verpacken?
Was meinst du mit * * über viel versprechend? Brauchen Sie wirklich "Upload", um Callback-basiert zu sein? – Ryan
Das ist, was ich frage ... Sollte es nur eine Rückkehr sein und dann mit einem Schalter diese Antwort behandeln? – Ando
Nicht sicher, was Sie mit "mit einem Schalter" entweder meinen. Wenn Sie nicht möchten, dass Ihr 'api.upload' Callback-basiert ist, ist es wahrscheinlich am besten, wenn Sie nur ein Versprechen abgeben, ja. – Ryan