gpt4 book ai didi

javascript - Node.js for 循环后的回调

转载 作者:行者123 更新时间:2023-11-28 05:16:15 26 4
gpt4 key购买 nike

我是 Node 新手,正在尝试在 API 调用的 for 循环中附加数据,但遇到了 Node 异步特性的挑战。

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);

faceAPI 函数中的 console.log 正确打印到控制台,但没有反射(reflect) for 循环应该进行的更改。我尝试使用 async.forEachOf 但控制台似乎永远挂起。

最佳答案

我相信您尝试以同步方式调用 url 请求,但正如您提到的,结果是异步的。

我相信这个库对您有好处: async

此外,您可以将方法编写为递归样式。但这不是一个好的做法。您应该将此方法更改为立即调用,然后在回调 post 方法中传递 faceAPI(data) 方法。

关于javascript - Node.js for 循环后的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40965936/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com