typescript 示例constructor.name

disho6za  于 2022-11-18  发布在  TypeScript
关注(0)|答案(1)|浏览(150)

背景故事:
目前,我们正在从GET API获取图像

Accept: 'application/octet-stream',
responseType: 'blob'

我们使用以下方法在UI上显示图像。

let imageUrl = URL.createObjectURL(data);

现在这种方式,它在Chrome(Windows和Mac)中几乎所有的地方都工作得很好,但在Safari中的一个地方,它会给出一个错误响应,如。
“回应不是Blob。”
在调试时,我们发现我们从Angular得到了这个错误。

case 'blob':
return res$.pipe(map((res) => {
    // Validate that the body is a Blob.
    if (res.body !== null && !(res.body instanceof Blob)) {
        throw new Error('Response is not a Blob.');
    }
    return res.body;
}));

当我检查
res.body instanceof Blob // true in chrome but in safari its false
接下来我尝试在Safari中调试

res.body.constuctor.name where I get a response like "Blob"

所以我的问题是
我怎么知道instanceof value的输出是什么?

okxuctiv

okxuctiv1#

使用此选项

return this.http.get(url, { responseType: 'blob', observe: 'response' }
).pipe(map((res: any) => {
      return URL.createObjectURL(res.body);
}));

这里的关键是观察:'response'。Safari浏览器或iOS有时会很混乱,但无论您使用哪种浏览器,此方法都可以正常工作。仅在处理图像时使用此方法

相关问题