繁体   English   中英

等待 promise 完成,然后执行下一个

[英]wait for a promise to finish and then execute the next one

我试图在文件系统中执行一些文件的删除,然后在ddbb中完成删除。

我试图首先在文件系统中执行删除,因为我需要咨询 ddbb,然后从 ddbb 中删除。

我正在尝试按如下方式执行它:

public deleteApplicationInFileSystem = (request: any): Promise < void > => {
  return new Promise((resolve, reject) => {
    this.registryService.deleteApplicationInFileSystem(param1, param2, param3).then(() => {
      resolve();
    }).catch((err: any) => {
      reject(err);
    });
  })
}

然后我在 deleteApploicationFromDDBB 中调用此方法,如下所示:

public deleteApplication = (request: any, response: Response): void => {
  this.deleteApplicationInFileSystem(request).then(() => { //
    this.registryService.deleteApplicationVersionInDDBB(parm1, param2, param3).then(() => {
      response.status(200).json({
        response: "Done."
      });
    }).catch(err => {
      if (err.split(",")[0] === "fieldNotFoundError") {
        response.status(404).json({
          response: {
            errorMessage: 'error 1'
          }
        });
      } else {
        response.status(400).json({
          response: {
            errorMessage: 'error 2'
          }
        });
      }
    })
  }).catch(err => {
    if (err) {
      response.status(400).json({
        response: 'Error deleting applicaion from the file system'
      });

    }
  })
}

我试图编写一个 async-await 函数,但它不起作用。 我对 Node 很陌生,任何解决这个问题的帮助都会很棒。

干杯

使用 async / await 你可以像这样纠正它:

public async deleteApplicationInFileSystem (request: any): Promise < void > {
  // This method must return Promise as well for this to work
  return this.registryService.deleteApplicationInFileSystem(param1, param2, param3);
}

public async deleteApplication (request: any, response: Response): Promise < void > {
  try {
    await this.deleteApplicationInFileSystem(request);
    await this.registryService.deleteApplicationVersionInDDBB(param1, param2, param3);
    response.status(200).json({ ... });
  } catch(error) {
     // Handle error
  }
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM