0
私の目標はforループ経由で配列を設定することです。そのアレイをHTTP
POST
コールで送信します。約束事とhttp呼び出しの角度でのループ
:最初にすべてのファイルをアップロードし、各ファイルの詳細を配列にプッシュします。
// For multiple files
for (let i = 0; i < projectRefFilesForUploading.length; i++) {
this.postSingleFile([] = projectRefFilesForUploading[i].file, projectDir).then(uploadedFiles => {
let filePath = uploadedFiles['projectRefFiles'][0].fd;
filePath = filePath.substring(filePath.lastIndexOf("/") + 1, filePath.lastIndexOf("."));
let filename = uploadedFiles['projectRefFiles'][0].filename;
let size = uploadedFiles['projectRefFiles'][0].size;
let type = uploadedFiles['projectRefFiles'][0].type;
let status = uploadedFiles['projectRefFiles'][0].status; // finished
let fileNote = projectRefFilesForUploading[i].fileNote;
projectRefFilesDataArray.push({fileName: filename, filePath: filePath, size: size, type: type, fileNote: fileNote});
});
}
ie:http post callで配列をポストします。
let body = {
projectId: projectId,
projectRefFiles: projectRefFilesDataArray
}
let headers = new Headers();
let options: RequestOptionsArgs = { headers: headers, withCredentials: true }
return new Promise((resolve, reject) => {
this.http.post(this.apiEndpoint + "/add/all", body, options).toPromise()
.then(response => {
let jsonData = response.json();
if (jsonData.apiStatus == 1) {
resolve(jsonData);
}
else reject(jsonData.message);
})
.catch(reason => reject(reason.statusText));
});
問題は、async
関数呼び出し、ループの実行と並行してそのデータポストhttp
コールにあります。したがって、それはhttp
呼び出しで空の配列を送ります。呼び出しメソッドをループ内に置くと動作します。しかし、それはあまりにも多くのループを作成して呼び出しを作成しました。
どのように検出するために、私を助けてください、ループがhttp
コール
'reason'は定義されません。それを修正するための任意のアイデア? –
あなたの答えは本当に助けになりました。 anywaythanks –
申し訳ありませんが私はあなたの最初の返信を参照してください。どういたしまして。 –