2017-02-27 1 views
0

superagent를 사용하여 API에 항목을 업로드하는 데 도움이 필요합니다.POST POST API를 사용하여 멀티 파트 양식 업로드

단일 업로드 항목의 한도는 500입니다. 따라서 500 개가 넘는 항목을 보내려면 예를 들어 업로드 크기가 500 인 경우 요청을 3 개의 개별 요청으로 분할해야합니다.

요청이 중단되었지만 API 요청이 여러 번 어떻게되는지 궁금합니다.

어떻게하면 슈퍼 에이전트를 사용하여 체인 연결하는 것이 좋을까요? 다중 부분 업로드를 살펴 보았지만 이것이 동일한 지 여부는 알 수 없습니다.

+1

, 당신은 그 때는()가'통화') (가져 오기 '에 체인 – guest271314

+0

guest271314 @'사용할 수 있어야합니다 . 프로그래밍 방식으로이를 수행 할 수있는 방법이 있습니까? –

+1

예, [multiple, sequential fetch() Promise] (http://stackoverflow.com/questions/38034574/multiple-sequential-fetch-promise/)를 참조하십시오. 이 패턴은 "재귀"가 아니라 "일정 잡기"로 간주됩니다. 15 만 건의 요청을 의미합니까? 아니면 세 가지 요청? 요청을 순차적으로 작성해야합니까? – guest271314

답변

1

당신은 배열을 포함하는 배열 .lengthtrue에 대한 응답의 다른 반환 배열을 평가하는 경우 함수에 전화 예약 Array.prototype.shift(), .then()를 사용할 수 있습니다. 프로세스를 순서대로 수행합니다. 순서는 요구 사항의 일부가 아닌 경우

const requests = [[..], [..], [..]]; 
let results = []; 
let request = requests.shift(); 
let handleRequests = (data) => fetch("/path/to/server", { 
    method:"POST", body:data 
}) 
.then(response => response.text()) 
.then(res => { 
    results.push(res); 
    return requests.length ? handleRequest(requests.shift()) : results 
}); 

handleRequest(request) 
.then(res => console.log(res) 
, (err) => console.log(err)); 

주, 당신은 .shift()에 대한 Promise.all(), Array.prototype.map()을 대체 할 수 있습니다. 감사합니다,하지만 난 배열의 배열에하고 싶어 - superagent``확실하지

let handleRequests = (data) => fetch("/path/to/server", { 
    method:"POST", body:data 
}) 
.then(response => response.text()); 
Promise.all(requests.map(handleRequests)) 
.then(res => console.log(res) 
, (err) => console.log(err));