尝试在Angular中调用“ model.predict”时出现Clarifai对象错误

时间:2018-11-05 08:55:32

标签: angular rest typescript clarifai

我正在尝试调用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;
}

1 个答案:

答案 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
});