在native native中设置fetch调用之外的变量值?

时间:2016-09-07 22:15:24

标签: reactjs react-native fetch react-native-fbsdk

我正在编写一个应用本机的应用程序,我想查询和我有的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时,未设置值且变量保持为空。

我应该如何解决这个问题?

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

可能是异步问题。如果你在fetch promise链末尾的回调中注销responseData._bodyText那么它可能是正确的但是如果你记录了分配的value变量并看到空字符串我会认为你是在获取提取承诺之前的某个时刻记录。

答案 2 :(得分:0)

db.galery.find({ _id: "something", "gallerySlides.imageUrl": {$ne: null} })