【发布时间】:2021-04-06 14:29:03
【问题描述】:
在我的 Angular 中,我有一项服务可以在画布上绘制图片并获取其“ImageData”。
这是我的 service.ts:
getColorArray (movie: MovieDb): Observable<any> {
var img = new Image();
img.crossOrigin = "Anonymous";
img.src = "https://www.themoviedb.org/t/p/w342/" + movie.poster;
var canvas = <HTMLCanvasElement>document.getElementById("canvas");
var ctx = canvas.getContext("2d");
canvas.height = 50;
canvas.width = 30;
ctx.clearRect(0, 0, canvas.width, canvas.height);
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
var imgData = ctx.getImageData(0, 0, canvas.width, canvas.height);
return of(imgData)
}
还有我使用它的 .ts:
pixelate(movie) {
this.getBackgroundColor.getColorArray(movie)
.subscribe(r => do something with r)
我已经把它作为一个 Observable 认为 imgData 将在 getImageData() 完成时返回,但它会在 getColorArray() 被调用时立即返回。
我如何等待getImageData() 完成后再返回其值?
【问题讨论】:
-
getImageData()不是异步 API。我的猜测是你还有另一个错误。
标签: angular asynchronous promise observable