【发布时间】:2018-08-18 22:30:40
【问题描述】:
在研究了 Futures、Promises、wrapAsync 之后,我仍然不知道如何解决这个问题
我有这个方法,它获取一组图像,将其发送到 Google Cloud Vision 进行徽标检测,然后将所有检测到的带有徽标的图像推送到一个数组中,我尝试在我的方法中返回。
Meteor.methods({
getLogos(images){
var logosArray = [];
images.forEach((image, index) => {
client
.logoDetection(image)
.then(results => {
const logos = results[0].logoAnnotations;
if(logos != ''){
logos.forEach(logo => logosArray.push(logo.description));
}
})
});
return logosArray;
},
});
但是,当从客户端调用该方法时:
Meteor.call('getLogos', images, function(error, response) {
console.log(response);
});
总是返回空数组,这是可以理解的,因为在 Google 处理完所有数组并返回结果之前,该方法返回了 logosArray。
遇到这种情况怎么办?
【问题讨论】:
-
你至少应该收到你的空数组,而不是
undefined -
是的,返回一个空数组,我的错。我已经编辑了问题。
标签: javascript asynchronous meteor google-cloud-vision