Usando JsPsych, necesito configurar un temporizador de 10 segundos para cada pregunta para que cuando se acabe el tiempo, la prueba termine de inmediato y pase a la siguiente pregunta. Aquí está mi código:
var time_limit = 10000; var start_time2; var end_test_timer; var trial_count = 0; var n_trials = questions.length; var counter2 = 1; var ListB_test_trial = { timeline_variables: [ {data: questions[0], q: questions[0]}, {data: questions[1], q: questions[1]}, ], timeline: [ { timeline: [ {type: 'survey-text', questions: function (){ return [{prompt: '(Q' + counter2 + '/15) ' + jsPsych.timelineVariable('q', true), columns: 25, required: true}] }, button_label: ['submit'], data: jsPsych.timelineVariable('data'), preamble: '<p style="font-size: 15px; line-height: 12px;">[Please answer using your own knowledge and best guess. Type your answer and press submit.]</p>', on_load: function() { trial_count++; // we need to set up the timer to end the current timeline after a certain duration, but only on the first trial if (trial_count > 0) { start_time2 = performance.now(); var end_test_timer = setTimeout(function() { // this stuff is just for testing var end_time = performance.now(); var elapsed_time = end_time - start_time2; console.log("elapsed time: ", elapsed_time); // this function is all you need to end the current timeline jsPsych.endCurrentTimeline(); // this function ends the current trial jsPsych.finishTrial({status: "ended early"}); }, time_limit); } }, on_finish: function() { counter2++; // we also need to cancel the setTimeout timer if the person gets all the way through the timeline before // time_limit is reached, otherwise endCurrentTimeline will fire during the next timeline - not good!! if (trial_count == n_trials) { clearTimeout(end_test_timer); } } } ], randomize_order: true, }, get_ready ] }; timeline.push(ListB_test_trial);Obtuve el código de aquí: https://github.com/jspsych/jsPsych/discussions/1146 pero no sé cómo adaptarlo. Hasta ahora, en lugar de 10 para cada pregunta, el límite de tiempo total para responder todas las preguntas es de 10.
¡Gracias!