【发布时间】:2018-09-16 18:28:44
【问题描述】:
我是 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')
});
?第一种方法是反模式吗?这是错的吗”?为什么?
【问题讨论】:
-
您根本不需要(手动创建的)承诺。就拿你的第一个例子来说,使函数异步,删除
new Promise东西和return而不是resolve。 -
@tkausl 问题是如果我不返回任何东西,``` .then(() => { alert('loaded') });``` 即使没有完成代码也会完成在 someFunc 中(我正在用 fetch() 做一些请求)
-
异步函数隐式返回一个承诺,该承诺将被解析为您返回的值。
-
如果我不返回任何东西,它无论如何都会得到解决。那是我的问题。我想我不明白一些事情。顺便说一句,我在那个异步函数中也使用了 fetch 和
navigator.geolocation.getCurrentPosition。 -
好吧,这样说吧:如果您返回某些内容或函数以其他方式返回(在结束时
}),它将得到解决,这与您遇到的行为相同您的示例 sn-ps。
标签: javascript react-native promise