저는 node.js의 초보자입니다. 이제 일부 API 결과를 얻으려고합니다. 비동기 모듈 (https://github.com/caolan/async)을 사용하여 요청을 병렬 처리하므로 최적화 할 수 있습니다.병렬 API 요청시 비동기 모듈 오류가 발생했습니다.
:문제는 코드가 다른 API 호출의
을에서 다른 라인에 각 시간 점 (이하 "콜백 (ERR, 데이터)"라인)이 오류가 없다는 오류를 반환된다 내가 API 요청하기 위해 다음과 같은 기능을 사용하고
if (called) throw new Error("Callback was already called.");
^
Error: Callback was already called.
:
function getData(s, apiURL, getURL, callback) {
var ht;
if (s == 1) {
ht = https;
} else {
ht = http;
}
var options = {
hostname : apiURL,
path : getURL,
method : 'GET'
}
var content = "";
ht.get(options, function(res) {
console.log("Got response: " + res.statusCode);
res.on("data", function(chunk) {
content += chunk;
//console.log(content);
callback(content);
});
}).on('error', function(e) {
console.log("Error: " + e.message);
console.log(e.stack);
});
}
는 설명하기 위해이 내가 비동기 모듈을 사용하고 있습니다 방법은 다음과 같습니다
,536,var sources = sources.split(',')
async.parallel({
flickr : function(callback) {
if (sources[0] == 1) {
getData(0, 'api.flickr.com',
"/services/rest/?method=flickr.photos.search&format=json&nojsoncallback=1&api_key=" + config.flickr.appid + "&per_page=5&tags=" + tags,
function(data) {
callback(null, data); //here that the error may point
});
} else { callback(); }
},
instagram : function(callback) {
if (sources[1] == 1) {
getData(1, 'api.instagram.com',
"/v1/tags/" + tags.split(',')[0] + "/media/recent?client_id=" + config.instagram,
function(data) {
callback(null, data); //here that the error may point
});
} else { callback(); }
}
}, function(err, results) {
console.log(results);
});
희망을 보내 주시면 감사하겠습니다.