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