思源嵌入块js的问题
see https://github.com/siyuan-note/siyuan/issues/13775
如图
先说异步函数
修改前在new function函数体中只能这样使用
//!js
return (async ()=>{
const result await query();
return result;
})();
// 或
const asyncFunc = async () => {
const result await query();
return result;
}
return asyncFunc();
修改后可以这样使用
return await query();
显然后者更简洁和优雅。
再说错误信息
思源拦截了错误信息,既无抛出错误也无打印错误信息,只是返回了空数组,界面显示就是没匹配任何内容。
这个非常不友好,如果函数体内有语法错误,应该输出到控制台,这样开发起来更方便。
要想捕获错误,必须自己在代码中try{}catch(e){},如下,非常麻烦,尤其对小白用户,非常不友好。
//!js
try {
return query("select `aa` as `aa__w80_c:blue_0`, `bb` from ?", [fromTable('20250110154352-pdr5v3t'),item]);
} catch(e) {
console.error(e)
return [];
}
