diff --git a/rslib/src/scheduler/fsrs/params.rs b/rslib/src/scheduler/fsrs/params.rs index bea1f5e82..e01b260d6 100644 --- a/rslib/src/scheduler/fsrs/params.rs +++ b/rslib/src/scheduler/fsrs/params.rs @@ -81,7 +81,7 @@ impl Collection { // adapt the progress handler to our built-in progress handling let progress = CombinedProgressState::new_shared(); let progress2 = progress.clone(); - thread::spawn(move || { + let progress_thread = thread::spawn(move || { let mut finished = false; while !finished { thread::sleep(Duration::from_millis(100)); @@ -98,6 +98,7 @@ impl Collection { } }); 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)) { let current_rmse = fsrs.evaluate(items.clone(), |_| true)?.rmse_bins; let optimized_fsrs = FSRS::new(Some(¶ms))?; diff --git a/ts/routes/deck-options/FsrsOptions.svelte b/ts/routes/deck-options/FsrsOptions.svelte index 6a3501ea4..8789cf885 100644 --- a/ts/routes/deck-options/FsrsOptions.svelte +++ b/ts/routes/deck-options/FsrsOptions.svelte @@ -155,7 +155,7 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html )) || resp.params.length === 0 ) { - setTimeout(() => alert(tr.deckConfigFsrsParamsOptimal()), 100); + setTimeout(() => alert(tr.deckConfigFsrsParamsOptimal()), 200); } else { $config.fsrsParams5 = resp.params; }