これが「落とし穴」なのか、Javascript、React-native、またはそれらの組み合わせのバグなのかはわかりません。React-native アプリに関するいくつかの基本: react-redux
、redux-persist
、および を使用しredux-thunk
ます。
バックグラウンドでポーリングし、アプリ内のオブジェクトの更新をフェッチするフェッチがあります。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))
コメントの状態のように、実行するconsole.log(json)
と空の配列が返されます。ただし、同じことを再度ログに記録して呼び出すと.length
、json
更新されたオブジェクトの数が返されます。
lodash を使用して実行するconsole.log(_.clone(json))
と、予想される実際の配列が得られます。ただし、コードの下流で「読みやすさ」を維持していないようです。
ログ ステートメントが機能しなくなるため、ダウンストリームで発生することをデバッグできません。この動作の原因は何ですか? これredux-thunk
は約束の不適切な実装と関係がありますか?