gpt4 book ai didi

javascript - angular 真的遵循 fetch 的规范吗?

转载 作者:可可西里 更新时间:2023-11-01 17:05:44 25 4
gpt4 key购买 nike

Angular 的 http 文档说 http 服务返回的响应遵循 fetch 规范。

https://angular.io/guide/http#parse-to-json

在他们的示例中,这是您可以找到的代码

private extractData(res: Response) {
let body = res.json();
return body.data || { };
}

很明显,res.json() 的结果不是一个 promise

但是在 fetch 规范中,response.json() 方法应该返回一个 Promise

https://fetch.spec.whatwg.org/#response-class

我是否遗漏了 fetch 规范中的某些内容,或者 Angular 的实现有误?

最佳答案

查看 angular 的 http 源代码,很明显它没有返回 Promise:

 json(): any {
if (typeof this._body === 'string') {
return JSON.parse(<string>this._body);
}

if (this._body instanceof ArrayBuffer) {
return JSON.parse(this.text());
}

return this._body;
}

// source https://github.com/angular/angular/blob/master/packages/http/src/body.ts#L26

但是规范说

[NoInterfaceObject, Exposed=(Window,Worker)]
interface Body {
readonly attribute ReadableStream? body;
readonly attribute boolean bodyUsed;
[NewObject] Promise<ArrayBuffer> arrayBuffer();
[NewObject] Promise<Blob> blob();
[NewObject] Promise<FormData> formData();
[NewObject] Promise<any> json();
[NewObject] Promise<USVString> text();
};

因此,angular 似乎决定不严格遵守规范。

关于javascript - angular 真的遵循 fetch 的规范吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44726114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com