gpt4 book ai didi

javascript - 了解 promise

转载 作者:行者123 更新时间:2023-11-28 12:12:48 26 4
gpt4 key购买 nike

假设我有这个“伪”代码

static async fetchAuthData () {

AsyncStorage.getItem('authtoken', (err, value) => AuthData.token = value)
.then( (value) => {

{ ...Ok token fetched... }

})
.catch( (err) => {
return Promise.reject('Some sort of error');
});

AsyncStorage.getItem('userid', (err, value) => AuthData.userid = parseInt(value))
.then( (value) => {

{ ...Ok userid fetched... }

})
.catch( (err) => {
return Promise.reject('Some sort of error');
});

if (token ok && userid ok ) {
return Promise.resolve('ok');
}
else {
return Promise.reject('Some sort of error');
}

}

我假设 if (token ok && userid ok ) 在前两个 promise 得到解决或拒绝之前不会被执行。我对吗?。在我获得 token 之前,是否有可能执行 if (token ok && userid ok )

这个静态方法是在我的应用程序的最开始调用的,这是我决定直接进入应用程序或导航到身份验证流程的地方。

文档似乎对此并不清楚。

最佳答案

将await添加到AsyncStorage函数中以暂停执行,直到promise得到解决并转到下一行

static async fetchAuthData () {

await AsyncStorage.getItem('authtoken', (err, value) => AuthData.token = value)
.then( (value) => {

{ ...Ok token fetched... }

})
.catch( (err) => {
return Promise.reject('Some sort of error');
});

await AsyncStorage.getItem('userid',(err, value) => AuthData.userid = parseInt(value))
.then( (value) => {

{ ...Ok userid fetched... }

})
.catch( (err) => {
return Promise.reject('Some sort of error');
});

if (token ok && userid ok ) {
return Promise.resolve('ok');
}
else {
return Promise.reject('Some sort of error');
}
}

关于javascript - 了解 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57320406/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com