javascript - 使用异步解析是否合乎逻辑?
问题描述
我是 Promises 的新手,所以我想知道这是否可以:
this.someFunc()
.then(() => {
alert('loaded')
});
someFunc() = () => {
return new Promise(async(resolve) => {
let obj = await AsyncStorage.getItem('some_val');
//do stuff with obj
resolve('yay, everything's done');
});
};
或者我应该总是使用then
Promises,比如
return new Promise((resolve) => {
AsyncStorage.getItem('some_val')
.then((obj) => {
// do stuff with obj
resolve('yay')
});
? 第一种方法是反模式吗?这是错的吗”?为什么?
解决方案
将async
关键字添加到函数使其返回 Promise。
忽略该承诺并将其包装在另一个承诺中并没有真正意义。它使代码对试图维护它的人感到困惑。
您可以将其重写为:
someFunc() = async () => {
let obj = await AsyncStorage.getItem('some_val');
//do stuff with obj
return 'yay, everything's done';
};
推荐阅读
- python - 如何将多个字符串连接成一个
- swiftui - 如何检测何时单击/点击 MapMarker?
- splunk - 每天具有 distinct_count 的时间表
- docker - 由在 Windows 主机上创建的文件组成的 Ubuntu VM 中构建的 Docker 容器中的权限问题
- javascript - 如何使用 for 循环和错误数组实现表单验证
- r - 在 y 轴标签之前移动 facet_wrap 标签
- python - 熊猫如何创建一个显示每行之间距离度量的数据框?
- python - Python中神经网络中值和变量形状之间的不兼容
- c# - C# 打开本地文件
- reactjs - React:访问 React 的内部操作队列