Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度HttpClient get do text,而不是json_Angular_Ionic Framework - Fatal编程技术网

Angular 角度HttpClient get do text,而不是json

Angular 角度HttpClient get do text,而不是json,angular,ionic-framework,Angular,Ionic Framework,我正在尝试在我的HttpClient中为我的get请求禁用自动响应解析到json。然而,每次我设置 return this.http.get(requestURL, { responseType: 'text' }).pipe( map((response: Response) => { console.log(response); }) ); 我的VSCode终端在管道上展开,包括红色括号,我得到 error TS2345: Argument of type 'Op

我正在尝试在我的
HttpClient
中为我的
get
请求禁用自动响应解析到
json
。然而,每次我设置

return this.http.get(requestURL, {
  responseType: 'text'
}).pipe(
  map((response: Response) => {
    console.log(response);
  })
);
我的VSCode终端在
管道上展开
,包括红色括号,我得到

error TS2345: Argument of type 'OperatorFunction<Response, void>' is not assignable to parameter of type 'OperatorFunction<string, void>'
错误TS2345:类型为“OperatorFunction”的参数不能分配给类型为“OperatorFunction”的参数
???我正在跟踪文档。我的版本错了吗

------编辑------

经过下面的建议,我得到了这个

map((response: Response) => {
    return this.parseData(response.text());
})

error TS2345: Argument of type 'Promise<string>' is not assignable to parameter of type 'string'.
map((响应:响应)=>{
返回此.parseData(response.text());
})
错误TS2345:类型为“Promise”的参数不能分配给类型为“string”的参数。
[ng]类型“响应”不可分配给类型“字符串”。 你忘了用“等待”吗


其中,
parseData
将字符串作为输入。

问题在于您没有从RxJS操作符返回任何内容。您至少需要返回
响应

return this.http.get(requestURL, {
  responseType: 'text'
}).pipe(
  map((response: Response) => {
    console.log(response);
    return response;
  })
);
这将类似于
Array.prototype.map
,如果不返回任何内容,就TypeScript而言,可能会出现某种编译错误

实际上,这里根本不需要
map
,因为它用于转换/投影/映射发射的值。如果您试图执行副作用操作,如
console.log()
,则应改用以下运算符:

更新: 听起来您在尝试将
承诺
传递给只需要
字符串
的函数时收到了一个新错误。这来自
response.text()
。如果您确实需要执行方法
text()
,则可以使用运算符来解析承诺:

return this.http.get(requestURL, {
  responseType: 'text'
}).pipe(
  switchMap((response) => response.text()),
  map((text) => this.parseData(text))
);

希望这有帮助

问题是您没有从RxJS操作符返回任何内容。您至少需要返回
响应

return this.http.get(requestURL, {
  responseType: 'text'
}).pipe(
  map((response: Response) => {
    console.log(response);
    return response;
  })
);
这将类似于
Array.prototype.map
,如果不返回任何内容,就TypeScript而言,可能会出现某种编译错误

实际上,这里根本不需要
map
,因为它用于转换/投影/映射发射的值。如果您试图执行副作用操作,如
console.log()
,则应改用以下运算符:

更新: 听起来您在尝试将
承诺
传递给只需要
字符串
的函数时收到了一个新错误。这来自
response.text()
。如果您确实需要执行方法
text()
,则可以使用运算符来解析承诺:

return this.http.get(requestURL, {
  responseType: 'text'
}).pipe(
  switchMap((response) => response.text()),
  map((text) => this.parseData(text))
);

希望这有帮助

谢谢!请参阅我上面的后续编辑。我最初有一个解析函数来解析传入的自定义数据。但是,不是我得到了另一个。@ElDude错误是解析文本需要一个字符串,但您传递的是一个承诺。当响应到达map操作符时是否已经是文本?如果是这样,您可以将响应传递给helper函数。如果必须执行text(),则需要首先解决该问题,这可以通过另一个操作符(如switchMap)完成。我可以显示您是否对此有问题。@ElDude我已更新了答案,以显示如何使用另一个RxJS操作符,例如
switchMap
来执行和解析
text()
,以便将其传递到
parseData()
。谢谢!现在看起来更好了,但现在它会逐字符解析字符串。。。哈哈:结果我不得不删除你建议的
switchMap
,只需将我的代码更改为
map((响应:string)=>…)
就可以了。非常感谢你的帮助!谢谢请参阅我上面的后续编辑。我最初有一个解析函数来解析传入的自定义数据。但是,不是我得到了另一个。@ElDude错误是解析文本需要一个字符串,但您传递的是一个承诺。当响应到达map操作符时是否已经是文本?如果是这样,您可以将响应传递给helper函数。如果必须执行text(),则需要首先解决该问题,这可以通过另一个操作符(如switchMap)完成。我可以显示您是否对此有问题。@ElDude我已更新了答案,以显示如何使用另一个RxJS操作符,例如
switchMap
来执行和解析
text()
,以便将其传递到
parseData()
。谢谢!现在看起来更好了,但现在它会逐字符解析字符串。。。哈哈:结果我不得不删除你建议的
switchMap
,只需将我的代码更改为
map((响应:string)=>…)
就可以了。非常感谢你的帮助!