json - 为什么我得到更新的 json 字段转换的信息 ZoneAwarePromise 数据
问题描述
我正在尝试将“图像 URL 字段”转换为 base64 blob 数据,但是更新的字段控制台日志数据显示为 ZoneAwarePromise {__zone_symbol__state: null, __zone_symbol__value: Array(0)}
this.http.get(this.api).subscribe(data => {
this.mainContact = data;
for (var a = 0; a < this.mainContact.length; a++) {
for (var j = 0; j < this.mainContact[a].acf.project_gallery.length; j++) {
var mainUrl = 'https://cdnwebapp.azureedge.net'+this.mainContact[a].acf.project_gallery[j].url;
//Below updates the all field value to the converted blob
this.mainContact[a].acf.project_gallery[j].url = this.convertToDataURLviaCanvas(mainUrl, "image/jpeg", 1)
.then(base64Img => {
return base64Img;
// console.log(base64Img); *As Expected blob*
})
//console.log(this.mainContact[a].acf.project_gallery[j].url) * The update field data console log is showing as ZoneAwarePromise
}
}
});
convertToDataURLviaCanvas(url, outputFormat, osize){
return new Promise( (resolve, reject) => {
let img = new Image();
img.crossOrigin = 'Anonymous';
img.onload = function(){
let canvas = <HTMLCanvasElement> document.createElement('CANVAS'),
ctx = canvas.getContext('2d'),
dataURL;
canvas.height = 959;
canvas.width = 1365;
ctx.drawImage(img, 0, 0);
dataURL = canvas.toDataURL(outputFormat, osize);
//callback(dataURL);
canvas = null;
resolve(dataURL);
};
img.src = url;
});
}
解决方案
我认为您必须在.then
.
尝试:
this.convertToDataURLviaCanvas(mainUrl, "image/jpeg", 1)
.then(base64Img => {
this.mainContact[a].acf.project_gallery[j].url = base64img
console.log(base64Img);
console.log(this.mainContact[a].acf.project_gallery[j].url);
})
推荐阅读
- xml - XML (XSD) How-To:元素内容是另一个元素的名称
- html - ion-radio 试图显示成一行
- python - Conda 为通用 PyPI 包构建:我需要为哪些 Python 版本构建?
- angular - Angular - 从指令添加组件
- sql - GraphQL 会生成实际的 SQL 查询吗?
- java - 没有找到能够从类型转换的转换器 [org.springframework.data.jpa.repository.query.AbstractJpaQuery$TupleConverter$TupleBackedMap
- bash - 使用 bash 进行行流操作(添加空格 bw 所需的数字)
- hazelcast - Hazelcast 分布式地图获取操作的延迟非常高
- java - 如何让线程处理事件?
- python - 命令“python setup.py egg_info”失败