2

我正在用本机反应编写一个应用程序,我想查询我拥有的 API。API 非常简单,只是在网页上吐出一些文本。

我一直在使用这个:

var value = '';

fetch("http:myapi.com/")
.then((response) => response)
.then((responseData) => {
  value = responseData._bodyText;
  console.log(responseData._bodyText); //prints what I want
})
.done();

console.log(value); //prints an empty string

我想将 var "value" 的值设置为响应的文本。执行console.log 表明responseData._bodyText 确实有我想要的信息,但是当我尝试将var 值设置为responseData._bodyText 时,没有设置值并且变量保持为空。

我该如何补救?

4

3 回答 3

1

response是一个响应对象,而不是一个承诺。你可能想要response.json()response.text()

var value = '';

fetch("http:myapi.com/")
.then((response) => { return response.text() }) // change to return response.text()
.then((text) => {
  value = text;
})
.done();
于 2016-09-07T22:57:49.243 回答
0

可能是异步问题。responseData._bodyText如果您在 fetch promise 链末尾的回调中注销,那么它可能是正确的,但是如果您正在记录分配的value变量并看到空字符串,我会假设您在 fetch 承诺之前的某个时间点登录解决。

于 2016-09-07T22:31:06.733 回答
0
var value = '';

fetch("http:myapi.com/")
.then((response) => response.text())
.then((text) => value = text)
.done();
于 2016-09-08T00:45:30.103 回答