假设我有以下功能:
getImageText(base64Image) {
const body = {
"requests": [
{
"image": {
"content": base64Image
},
"features": [
{
"type": "TEXT_DETECTION"
}
]
}
]
};
return this.http.post('https://vision.googleapis.com/v1/images:annotate?key=' + environment.googleCloudVisionAPIKey, body);
}
现在,当此操作成功时,它会返回以下内容:{responses: [], text:'' }
所以简而言之,它返回一个带有response array
和text string
现在我的第一次尝试是设置以下返回类型:
getImageText(base64Image): Observable<{ responses: any, text: any }>
但是我不确定这是不是正确的做法。
我的控制台也给我一个错误。当这个 promise 返回错误时会发生什么,然后对象就不同了。
所以我的问题是在使用 http/promises
最佳答案
您的方法 getImageText(base64Image) 可能会返回一个 Observable。但是,您当前的实现没有返回一个。您可以将 promise 转换为 observable。
getImageText(base64Image): Observable<{ responses: any, text: any }> {
const body = {
"requests": [
{
"image": {
"content": base64Image
},
"features": [
{
"type": "TEXT_DETECTION"
}
]
}
]
};
return from(this.http.post('https://vision.googleapis.com/v1/images:annotate?key=' + environment.googleCloudVisionAPIKey, body));
}
然后你可以在需要的地方订阅这个方法。
function DoSomethingWithTheResponse(){
getImageText(yourBase64Image).subscribe(
value => {
//do something with the value
});
}
关于javascript - typescript 在http请求上设置返回类型的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58555903/