mirror of
https://github.com/jspsych/jsPsych.git
synced 2025-05-10 19:20:55 +00:00
59 lines
1.2 KiB
JavaScript
59 lines
1.2 KiB
JavaScript
/**
|
|
* jspsych-call-function
|
|
* plugin for calling an arbitrary function during a jspsych experiment
|
|
* Josh de Leeuw
|
|
*
|
|
* documentation: docs.jspsych.org
|
|
*
|
|
**/
|
|
|
|
jsPsych.plugins['call-function'] = (function() {
|
|
|
|
var plugin = {};
|
|
|
|
plugin.info = {
|
|
name: 'call-function',
|
|
description: '',
|
|
parameters: {
|
|
func: {
|
|
type: jsPsych.plugins.parameterType.FUNCTION,
|
|
pretty_name: 'Function',
|
|
default: undefined,
|
|
description: 'Function to call'
|
|
},
|
|
async: {
|
|
type: jsPsych.plugins.parameterType.BOOL,
|
|
pretty_name: 'Asynchronous',
|
|
default: false,
|
|
description: 'Is the function call asynchronous?'
|
|
}
|
|
}
|
|
}
|
|
|
|
plugin.trial = function(display_element, trial) {
|
|
trial.post_trial_gap = 0;
|
|
var return_val;
|
|
|
|
if(trial.async){
|
|
var done = function(data){
|
|
return_val = data;
|
|
end_trial();
|
|
}
|
|
trial.func(done);
|
|
} else {
|
|
return_val = trial.func();
|
|
end_trial();
|
|
}
|
|
|
|
function end_trial(){
|
|
var trial_data = {
|
|
value: return_val
|
|
};
|
|
|
|
jsPsych.finishTrial(trial_data);
|
|
}
|
|
};
|
|
|
|
return plugin;
|
|
})();
|