我有我的函数handleRes,他在await中执行。

但是我想在await结束时执行exec函数。像.then.catch

我该怎么做

我导入此功能

 const handleRes = res => {
    res
      .then(({ data }) => {
        console.log('done');
      })
      .catch((error) => {
        console.log('error');
      });
  };


在此文件中读取它,并在结束时执行一些操作

await handleRes(res).then(() => setLoading(false));

最佳答案

handleRes不返回承诺链,因此您不能等待其工作从外部完成。解决方案是对其进行修改,以使其返回链:

const handleRes = res => {
  return res
//^^^^^^
    .then(({ data }) => {
      console.log('done');
    })
    .catch((error) => {
      console.log('error');
    });
};


然后您可以await它。在正常情况下,这将是:

await handleRes(res);
setLoading(false);


...但是使用then的版本也可以。

在正常情况下,您还将删除该错误处理程序,以使错误沿着链传播,并由调用handleRes的函数(或调用它们的函数,如果它们通过链传递)进行处理。使用上面显示的功能(使用catch),调用者无法知道操作是成功还是失败,因为catch将拒绝转换为实现(值为undefined)。

09-17 02:32