我有我的函数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
)。