我正在尝试调用Clarifai的颜色API来接收图像中的不同颜色。但是,调用API时遇到了一些困难,因为我总是会返回空对象。
这是用于调用API的代码:
private app;
obj: RootObject ;
constructor(private _http: HttpClient) {
this.app = new Clarifai.App({
ApiKey: "CENSOR BAR"
});
};
public getColorValues(imageUrl: string): RootObject {
this.app.models.predict('eeed0b6733a644cea07cf4c60f87ebb7', imageUrl).then(
function (response) {
this.obj = response;
},
function (error) {
this.obj = "There was an error";
}
);
let i: number;
while (this.obj == null) {
i += 1;
}
console.log("Waited " + i + " cycles for response.")
console.log("Object: " + this.obj);
return this.obj;
}
答案 0 :(得分:1)
该呼叫为async
,但是您将其作为同步呼叫处理。返回的this.obj
尚未设置。
除此之外,根本不会设置它,因为您正在使用function
关键字,它将this
引用更改为本地函数
您的getColorValues
只能返回Promise<RootObject>
:
getColorValues(imageUrl: string): Promise<RootObject> {
return this.app.models.predict('eeed0b6733a644cea07cf4c60f87ebb7', imageUrl);
}
就是这样,这就是您所需要的。调用getColorValues
时,请确保按以下方式调用它:
getColorValues(imageUrl).then((resp) => {
this.obj = resp;
// this.obj contains what you want
});