能否使用Lodash库的invoke方法调用异步函数?
当然可以这么写,而且两种写法的效果完全等价!
先看你的原始代码和想要修改的写法:
原始写法:
import { invoke } from 'lodash'; ... ... do something ... ... const result = await jsonResponse.json();
修改后的写法:
import { invoke } from 'lodash'; ... ... do something ... ... const result = await invoke(jsonResponse, 'json');
Lodash 的 invoke 方法核心作用就是调用对象上指定的方法,这里invoke(jsonResponse, 'json')和直接写jsonResponse.json()是完全一致的逻辑——它会帮你定位到jsonResponse上的json方法并执行它。
因为json()方法返回的是一个 Promise,所以你在invoke前面保留await是完全正确的,这样能正常获取到解析后的 JSON 结果,和原始写法没有任何功能差异。
另外补充一点:如果后续这个方法需要传递参数,invoke也支持在第三个参数开始依次传入,比如:
// 假设json方法需要接收配置参数的场景 const result = await invoke(jsonResponse, 'json', { encoding: 'utf8' });
所以你的修改思路是完全可行的,可以放心使用~
内容的提问来源于stack exchange,提问作者Eranga Heshan
相关产品推荐
相关产品推荐

