私はNodeを初めて使用しており、forループのデータを追加しようとしていますが、Nodeの非同期性の問題を抱えています。 faceAPI機能プリントでforループの後のNode.jsコールバック
function emotionsAPI(data, next){
for(var url in data) {
if(data.hasOwnProperty(url)) {
request({
method: 'POST',
url: 'https://api.projectoxford.ai/emotion/v1.0/recognize',
headers: {
"Content-Type": 'application/json',
"Ocp-Apim-Subscription-Key": keys.emotion_key
},
body: "{\"url\" : \"" + url + "\"}"
}, function (error, response, body){
var emotions = JSON.parse(body)
if (emotions.length > 0){
var scores = emotions[0].scores;
console.log("scores found");
console.log(scores.anger);
data[url].anger = scores.anger;
}
})
}
}
next(data);
}
function faceAPI(data){
console.log("HELP");
console.log(data);
}
emotionsAPI(data, faceAPI);
にconsole.logコンソールに正しくなく、forループが作られている必要があることを、変更を反映するものではありません。私はasync.forEachOfを使ってみましたが、コンソールは永久にハングアップしているようでした。
非同期メソッドでデータを変更しようとしています。彼らは別の方法で。たぶんurl要求のコールバックメソッドの中に "next(data)"メソッドを置くべきでしょう。 –