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

Clarifai object error when trying to call "model.predict" in Angular

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

呼叫是 async,但您将其作为同步呼叫处理。 returned this.obj 当你 return 它没有被设置。

除此之外,它根本不会被设置,因为您正在使用 function 关键字,它改变了 this 对局部函数的引用

你的getColorValues只能return一个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
});