针对这个函数:
export const runJS = async (
code: string,
web = is.main ? activeWindow()?.webContents : electron.webFrame,
): Promise<void> => {
if (!web) {
throw new Error('No active window');
}
await web.executeJavaScript(code);
};
有几个点看不明白:
- 参数:
web = is.main ? activeWindow()?.webContents : electron.webFrame,
是一个三段表达式,请问是否调用函数,参数web是:is.main
,就变成activeWindow()?.webContents
真正传入,传入的不是is.main
,就变为electron.webFrame
? - 返回类型:
Promise<void>
是指的返回await func()
,都需要使用Promise
类型参数是吗?
返回类型:
Promise<void>
这里的<void>
作用是什么呢?
如下有什么区别呢?Promise<void> Promise
1.参数web这块的赋值,指的是默认参数。如果外部调用runJS时候,没有传第二个参数,第二个参数默认就是这个三目运算的返回值,其中的is并不是外部传入的,应该是个全局变量。
2.返回类型Promise<void>是因为这个函数是async函数,返回值总会用Promise包裹。
3.Promise<T>中,T表示包裹的数据的类型。如果这里函数返回1,应该是Promise<number>,返回"abc",应该是应该是Promise<string>。这里实际函数没有返回值,所以是viod。