Code: Select all
.onScrollVisibilityChange { isVisible in
if isVisible {
Task {
saveIdsWatchedTime(postTime: meme.time)
}
}
}
Warum ist das, wenn ich die Aufgabe verwende, im Grunde genommen asynchronisch? p>
Dies ist die Funktion: < /p>
Code: Select all
func saveIdsWatchedTime(postTime: Int) {
if(watchedTimeChecked){
return
}
watchedTimeChecked = true
if((gal == "latest" || gal == "top") && !endOfMemesReached && postTime < lastTimeChecked){
var endString = ""
var endArray = [String]()
let newestMemeViewed = Int(memesWatchedTimeRanges[0].components(separatedBy: ",")[0])
var oldestMemeViewed = Int(memesWatchedTimeRanges[0].components(separatedBy: ",")[1])
if(oldestMemeViewed! > postTime){
memesWatchedTimeRanges[0] = String(newestMemeViewed!) + "," + String(postTime)
oldestMemeViewed = postTime
}
var firstPassed = false
for bla in memesWatchedTimeRanges{
let newestTimePastScroll = Int(bla.components(separatedBy: ",")[0])
let oldestTimePastScroll = Int(bla.components(separatedBy: ",")[1])
if(!firstPassed){
firstPassed = true
endArray.append(bla)
endString += String(newestTimePastScroll!) + "," + String(oldestTimePastScroll!) + "|"
}else{
if(newestMemeViewed! > newestTimePastScroll! && oldestMemeViewed! < oldestTimePastScroll!){
}else{
endArray.append(bla)
endString += String(newestTimePastScroll!) + "," + String(oldestTimePastScroll!) + "|"
}
}
}
if(endString.onlyLastCharacters(1) == "|"){
endString = String(endString.dropLast(1))
}
memesWatchedTimeRanges = endArray
if(gal == "latest"){
memesWatchedTimeRangesString = endString // AppStorage, between 25 and 100 characters long
}else{
memesWatchedTimeRangesTopString = endString // AppStorage, between 25 and 100 characters long
}
}
}