尝试从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')});
});
}
答案 0 :(得分:0)
您大概正在寻找
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
个承诺,不想传递回调。