Javascript “等待返回”的替代选项对于等待某些结果时必须返回的情况

Javascript “等待返回”的替代选项对于等待某些结果时必须返回的情况,javascript,node.js,typescript,asynchronous,async-await,Javascript,Node.js,Typescript,Asynchronous,Async Await,我知道ESLint/TSLint rulest不能在100%的情况下“正确”。然而,我需要决定哪些规则我真的不需要 在ElectronJS中,不建议在渲染器进程中使用Node.js模块。相反,渲染器进程应该向主进程发送请求并侦听响应。下面的TypeScript类负责这个例程。(我希望我的变量名使代码不需要注释,但这些很难理解,请在注释中告诉我) 从“electron”导入{ipcRenderer as ipcRenderer}; 从“@ProjectInitializer:Root/InterP

我知道ESLint/TSLint rulest不能在100%的情况下“正确”。然而,我需要决定哪些规则我真的不需要

在ElectronJS中,不建议在渲染器进程中使用Node.js模块。相反,渲染器进程应该向主进程发送请求并侦听响应。下面的TypeScript类负责这个例程。(我希望我的变量名使代码不需要注释,但这些很难理解,请在注释中告诉我)

从“electron”导入{ipcRenderer as ipcRenderer};
从“@ProjectInitializer:Root/InterProcessDataTransferProtocol”导入InterProcessDataTransferProtocol;
导入CheckingPathForWriteAccess=进程间数据传输协议。CheckingPathForWriteAccess;
导入MainProcessEvents=InterProcessDataTransferProtocol.MainProcessEvents;
导入超时=NodeJS.Timeout;
导出默认抽象类进程间协调器{
私有静态只读是\路径\可写\响应\等待\周期\毫秒:数字=10000;
公共静态异步请求CheckingPathForAccessToWrite(targetPath:string):承诺{
ipc.send(
InterProcessDataTransferProtocol.RenderProcessEvents.checkingPathForWriteAccessRequestSent,
{targetPath}
);
const responseWaitingTimeout:Timeout=setTimeout(
()=>{抛出新错误(“主进程无响应”);},
InterProcessFaciliator.IS\u路径\u可写\u响应\u等待\u周期\u毫秒
);
return等待新承诺((resolve:(isWritable:boolean)=>void):void=>{
伊普顿(
MainProcessEvents.checkingPathForWriteAccessDone,
(_event:Electron.event,responsePayload:CheckingPathForWriteAccess.responsePayload)=>
{
clearTimeout(responseWaitingTimeout);
if(responsePayload.targetPath===targetPath){
解析(responsePayload.iswrited);
}
});
});
}
}
目前,方法
requestCheckingPathForAccessToWrite
违反了ESLint规则。但是,它可以用作:

async function checkTheDefaultPathForWrightPermission(): Promise<void> {
    try {
        const pickedPathIsWritable: boolean = await InterProcessFacilitator
              .requestCheckingPathForAccessToWrite(DEFAULT_PATH);
      pickedPathIsWritable ?
          this.relatedStoreModule.reportAboutUnableToWriteToDirectoryErrorResolution() :
          this.relatedStoreModule.reportAboutUnableToWriteToDirectoryErrorOccurrence();
    } catch (error) {
        console.error(`unable to check wright permission for path ${DEFAULT_PATH}`);
        console.error(error);
    }
}
异步函数检查DefaultPathForWrightPermission():Promission{
试一试{
常量pickedPathIsWritable:boolean=等待进程间连接
.requestCheckingPathForAccessToWrite(默认路径);
pickedPathIsWritable?
此.relatedStoreModule.ReportAboutAboutEnableToWriteToDirectoryErrorResolution():
this.relatedStoreModule.ReportAboutableToWriteToDirectoryErrorOccurrence();
}捕获(错误){
错误(`无法检查路径${DEFAULT_path}`的权限');
控制台错误(error);
}
}
来自ESLint文档:

在异步函数中,return-await很少有用。自从 异步函数的返回值始终包装在 Promise.resolve,return wait实际上除了add之外什么都不做 在总体承诺解决或拒绝之前的额外时间。这个 唯一有效的例外是在try/catch中使用returnawait 语句捕获另一个基于承诺的函数的错误


你能批评我的解决方案或这条ESLint规则吗?在第一种情况下,建议重构?

因为它不是在同一块中,你就不能回报承诺吗?只需卸下
等待
?我认为这会导致与你目前的行为相同的行为code@CertainPerformance,谢谢你的回答。你说得对,
等待
在这里是不必要的。而这个案例也证明了规则是障碍。