Task { // #1
await FetchInventory() // #4
... GlobalTemp = ... // #5 (after data is loaded)
}
InventoryData = GlobalTemp // #2
CurrentInventory = try! JSONDecoder().decode(...) // #3
This is the order the statements are getting executed.
You need to do json decoding after await finished awaiting. And better do it without a global and camelCase the variables. Something like this:
Task {
let (data, response) = await FetchInventory()
currentInventory = try! JSONDecoder().decode(..., from: data)
}
You'd also need to manage "currentInventory" correctly (assuming your views are using it). See the recent thread with a similar setup.