- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 ReactJS,需要创建一个数组来插入数据,将其存储在 localStorage 中,稍后再查看。我首先使用 this.subscriptionsList = [];
创建数组,然后使用此方法检索数据。
fetchNow = async (token, nextToken) => {
fetch("somewebsite")
.then(( unformattedData ) => {
return unformattedData.json();
})
.then(( webData) => {
for(let i = 0; i < webData.length; i++){
this.subscriptionsList.push("someData");
}
if(webData.hasOwnProperty('token')){
this.fetchNow(token, webData.token);
}else{
return;
}
})
}
功能不完整,不是我提问的重点。它工作正常并推送正确的数据。
我使用这种方法检索数据:
this.fetchNow(response.accessToken, "")
.then( () => {
console.log(this.subscriptionsList);
console.log(JSON.stringify(this.subscriptionsList));
localStorage.setItem("subscriptionsList", JSON.stringify(this.subscriptionsList));
//console.log(JSON.parse(localStorage.getItem("subscriptionsList")));
})
当我尝试使用 JSON.stringify
时出现问题。执行 console.log(this.subscriptionsList)
会按预期打印一个包含所有数据的数组对象。但是,当我执行 console.log(JSON.stringify(this.subscriptionsList))
时,它会返回 []
。此外,当打印对象本身时,属性 length: 125
但在执行 console.log(this.subscriptionsList.length)
时返回 0
当使用 this.subscriptionsList[0]
访问时,它返回 undefined
。我正在阅读规范,似乎 JSON.stringify 应该与 javascript 数组一起使用。我是否遗漏了一些特定的 react ,或者这只是 JSON.parse 不可用?
https://gyazo.com/72aafe248ef61649a38c06d03fb3d830
https://gyazo.com/c2690b4392774fe4a98254a4d15f3a32
https://gyazo.com/e0793b5ec05da4259e16100f275da414
最佳答案
您需要在 fetchNow
中返回 promise 链,否则您稍后将无法链接到它。如果您还希望它也被链接,您还必须返回
在 fetchNow
中调用的递归 fetchNow
:
fetchNow = (token, nextToken) => {
return fetch("somewebsite")
.then(( unformattedData ) => {
return unformattedData.json();
})
.then(( webData) => {
for(let i = 0; i < webData.length; i++){
this.subscriptionsList.push("someData");
}
if(webData.hasOwnProperty('token')){
return this.fetchNow(token, webData.token);
}
})
}
async
函数不会神奇地使异步操作同步。它们 (1) 返回 Promises 并且 (2) 允许使用 await
关键字。但是由于您没有使用 await
,因此 fetchNow
不需要是 async
,并且由于 fetch
chain 已经是一个Promise
,可以不用async
直接返回。
如果您确实想要使用async
和await
,它会使代码更扁平且更容易理解:
fetchNow = async (token, nextToken) => {
const response = await fetch("somewebsite");
const webData = await response.json();
for(let i = 0; i < webData.length; i++){
this.subscriptionsList.push("someData");
}
if(webData.hasOwnProperty('token')){
await this.fetchNow(token, webData.token);
}
// async function will automatically return a Promise that resolves when the end is reached
}
关于Javascript JSON.stringify 返回 [],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50771021/
我从 https://github.com/douglascrockford/JSON-js/blob/master/json2.js 下载了 JSON2.js并且它没有 JSON2.stringif
我制作了一个 Stringify 协议(protocol),将实现该协议(protocol)的类型转换为字符串。 protocol Stringify { func stringify() -
在我的Reaction Native 0.70应用程序中有一些不可序列化的东西,它在上下文API中传递,以使它们可用于以下组件。以下是它的代码:。在可能需要检索不可序列化值的组件中:。但是,它在组件中
MISRA 标准不允许在宏定义中使用字符串化运算符在不使用 # 运算符的情况下实现相同概念的替代方法是什么? 最佳答案 实际上并没有任何直接的替代方案——只有变通办法。此建议规则与建议不要使用类似函数
MISRA 标准不允许在宏定义中使用字符串化运算符在不使用 # 运算符的情况下实现相同概念的替代方法是什么? 最佳答案 实际上并没有任何直接的替代方案——只有变通办法。此建议规则与建议不要使用类似函数
前言 JSON是一种轻量级数据格式,可以方便地表示复杂数据结构。JSON对象有两个方法:stringify()和parse()。在简单的情况下,这两个方法分别可以将JavaScript序列化
...使用 JSON2.js 和 JQUERY 正如您从第一张图片中看到的,对象属性 customerReport.Title 有撇号。在代码中你可以看到我正在调用 JSON.stringify()
我目前正在调查为什么 JSON.stringify() 没有正确解析我的对象。这是我试图解析为 JSON 字符串的对象: var data = [{ name: string, act
问题 大家好,有人可以帮我解决这个复杂的问题吗? :我正在使用 Spring boot v2.0.5 和 React.js v15.6.2、ReactDom v15.6.2、React Bootstr
我正在使用 Knockout.js 和 ASP.NET web ApiController 完成一个新项目。我看到的许多示例在将数据发布到服务器之前执行一些手动 JSON 序列化。此外,请求内容类型同
此宏在调用时编译: macro_rules! remote_optional { ($remote:ident with=$def:ident $def_str:expr) => {
我有一个返回对象,需要打印一些属性,但 JSON.stringify 无法识别一些属性。 例如: Object = {"Date":"Mon, 22 Jun 2015 10:56:50 GMT","C
JSON.stringify( ) 是否等同于序列化或有效序列化,或者它只是实现的必要步骤序列化? 换句话说,JSON.stringify( ) 是否足够但不需要序列化?还是必要但不充分?还是 Jav
JSON.stringify是我们经常用到的的一个方法,它主要作用是将 JavaScript 值和对象转换为字符串。如: JSON.stringify({ foo: "bar&
GCC 似乎总是在源代码中用空格扩展制表符。它保留表达式内部的空间。标准对此有何规定? 例如,c 会是什么?此示例中包含( 表示源代码文件中的乱码 \t 字符)。 #define X(a) #a co
根据this答案,JSON.parse() 的时间复杂度是 O(n) . 这是否适用于 JSON.stringify() ?似乎没有任何地方记录这一点。 最佳答案 它应该是 O(n),但是 n是被字符
connection.query( 'SELECT DeskName FROM desks WHERE stat = ?',["Booked"], function(err, rows){ if(
我们正在根据一种简单的模板格式构建动态 JSON 有效负载,该格式指示我们的有效负载应产生多少级别,例如"level1.level2"> 将产生: { "level1": [ {
我对 Node.js 和传递 JSON 数据相当陌生,但是有人可以让我深入了解为什么我不需要在其中执行 JSON.stringify 。 module.exports.getBusinessOffer
我有一个简单的 JavaScript 对象,其中包含一些设备信息,包括最后已知的地理位置(仅经度和纬度)。我正在使用 JSON.stringify 将此对象转换为 JSON,但我拥有的一个不是 boo
我是一名优秀的程序员,十分优秀!