2
내가 제 3 자 API를 소비
노드 V.8.x에 도입
비동기/기다리고 있습니다 기능과 함께 내 Nodejs 프로젝트에
Request 패키지를 사용하고
, 모든했다 API 제공 업체로부터 제한을받을 때까지 괜찮습니다. 누가 초당 10 개의 동시 요청을 제한합니다.제한 동시 요청
나는 rate-limiter와 같은 많은 NPM 패키지를 시도했지만, 최근 article이 내 문제와 관련되어있어 qrate 패키지를 소개합니다.
나는 아래의 코드로이 작업을 시도 : 내가 대신 '완료'의 콜백을 사용하여 내 'fetchAPIDetails'가에서 그것을 처리 할 필요가있을 수 있습니다 - 어떤 도움이 크게 감사합니다. 미리 감사드립니다.const async = require('async')
const request = require('request-promise')
const qrate = require('qrate')
const q = qrate(worker,1,5)
const worker = async (reqBody, options, done) => {
const options = { method: 'POST', url: apiURL, body: reqBody, timeout: 5000}
try{
const response = await request(options)
if(response.error){errorHandler(response.error); return {}}
else {
const body = response.body // Expecting XML
console.log(body.toString().slice(200,350))
return body
}
return done
}
catch(err){return errorHandler(err)} //errorHandler fn
}
const fetchAPIDetails = async() => {
const IdArr = [a,b,c] // An array of id, which need to pass in reqBody
try{
async.eachLimit(IdArr, 1, async id => {
const reqBody = await queryBuilder(id) // queryBuilder fn
q.push(reqBody)
})
} catch(err){return errorHandler(err)} //errorHandler fn
}