我不知道这是一个“陷阱”还是 Javascript、React-native 或它们的组合中的错误。关于 React-native 应用程序的一些基础知识:它使用react-redux
、redux-persist
和redux-thunk
.
我有一个在后台轮询并获取应用程序中对象的更新的 fetch。API 端点在没有数据更改时返回 304,当数据发生更改时,它返回一个更新对象数组。基本情况如下所示:
fetchSecure('/objects?filter=all&since='+lastPoll, apiToken, {method: 'GET'})
.then(response => {
if(response.status==200) {
response.json().then(json => { // this is a promise!
console.log(json) // this logs an empty array
console.log('Found '+json.length+' new objects') // this logs "1 new objects"
dispatch(updateObjects(json, true))
})
} else {
console.log('Completed poll: no changes')
}
})
.catch(error => console.log(error))
因此,正如评论所述,如果我执行 aconsole.log(json)
它会返回一个空数组。但是,如果我再次记录相同的内容并调用它.length
,json
则会返回更新对象的数量。
如果我使用 lodash 并执行console.log(_.clone(json))
它,那么它会给我预期的实际数组。但是,它似乎并没有在代码下游保持其“可读性”。
我无法调试下游发生的事情,因为我的日志记录语句停止工作。是什么导致了这种行为?这是否与redux-thunk
承诺的不当实施有关?