如何解决在“等待”方法完成之前执行的方法
尝试从checkPermissions()
返回值后执行setState,但是 async-await 没做。
我在这里找不到任何不正确的地方,您能指出我的错误吗?
仅供参考checkPermissions()
接受回调函数作为参数。
async componentDidMount() {
let authorizationStatus = false;
await PushNotification.checkPermissions(function(permissions) {
console.log(permissions);
authorizationStatus = permissions.alert
console.log('Run first')
});
console.log('Run after')
this.setState({
authorizationStatus,});
}
检查权限代码(Android)
@ReactMethod
public void checkPermissions(Promise promise) {
ReactContext reactContext = getReactApplicationContext();
NotificationManagerCompat managerCompat = NotificationManagerCompat.from(reactContext);
promise.resolve(managerCompat.areNotificationsEnabled());
}
解决方案尝试但失败了:
仅打印出Run first
,没有打印出Run after
。
async componentDidMount() {
let authorizationStatus = false;
PushNotification.checkPermissions(function(permissions) {
console.log(permissions);
authorizationStatus = permissions.alert
console.log('Run first')
this.setState({
authorizationStatus,},()=>{console.log('Run after')});
});
}
解决方法
您大概正在寻找
async componentDidMount() {
const permissions = await PushNotification.checkPermissions();
console.log(permissions);
const authorizationStatus = permissions.alert
console.log('Run first');
console.log('Run after')
this.setState({authorizationStatus});
}
您只能await
个承诺,不想传递回调。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。