Fix/FSRS progress sometime shows 0 reviews (#3591)

* Fix/FSRS progress sometime shows 0 reviews

* wait for progress_thread

* set 200ms timeout
This commit is contained in:
Jarrett Ye 2024-11-24 18:52:12 +08:00 committed by GitHub
parent 69ac450098
commit 9a013d8601
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 3 additions and 2 deletions

View file

@ -81,7 +81,7 @@ impl Collection {
// adapt the progress handler to our built-in progress handling // adapt the progress handler to our built-in progress handling
let progress = CombinedProgressState::new_shared(); let progress = CombinedProgressState::new_shared();
let progress2 = progress.clone(); let progress2 = progress.clone();
thread::spawn(move || { let progress_thread = thread::spawn(move || {
let mut finished = false; let mut finished = false;
while !finished { while !finished {
thread::sleep(Duration::from_millis(100)); thread::sleep(Duration::from_millis(100));
@ -98,6 +98,7 @@ impl Collection {
} }
}); });
let mut params = FSRS::new(None)?.compute_parameters(items.clone(), Some(progress2))?; let mut params = FSRS::new(None)?.compute_parameters(items.clone(), Some(progress2))?;
progress_thread.join().ok();
if let Ok(fsrs) = FSRS::new(Some(current_params)) { if let Ok(fsrs) = FSRS::new(Some(current_params)) {
let current_rmse = fsrs.evaluate(items.clone(), |_| true)?.rmse_bins; let current_rmse = fsrs.evaluate(items.clone(), |_| true)?.rmse_bins;
let optimized_fsrs = FSRS::new(Some(&params))?; let optimized_fsrs = FSRS::new(Some(&params))?;

View file

@ -155,7 +155,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
)) || )) ||
resp.params.length === 0 resp.params.length === 0
) { ) {
setTimeout(() => alert(tr.deckConfigFsrsParamsOptimal()), 100); setTimeout(() => alert(tr.deckConfigFsrsParamsOptimal()), 200);
} else { } else {
$config.fsrsParams5 = resp.params; $config.fsrsParams5 = resp.params;
} }