複数のページから関数をimportして同時実行する
実験
タイトルに「実験:」を含んだページのexperiment.jsにあるexecute()を実行し、その戻り値をまとめてconsole.log()に出力してみる
code:js
(async () => {
const {execute} = await import ('/api/code/takker/複数のページから関数をimportして同時実行する/script.js');
execute();
})();
code:script.js
export async function execute() {
const titles = scrapbox.Project.pages.flatMap(({titleLc, exists}) => exists && titleLc.startsWith('実験:') ? titleLc : []); const executes = await Promise.all(titles.map(title => getFunction(title, 'experiment.js')));
console.log(executes.flatMap(execute => execute ? execute() : [])); }
async function getFunction(title, filename) {
try {
const {execute} = await import(../${title}/${filename});
return execute;
} catch(e) {
return undefined;
}
}