在“等待"方法完成之前执行的方法 [英] Method executed before 'await' method complete
本文介绍了在“等待"方法完成之前执行的方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
尝试从checkPermissions()
返回值后执行setState,但是 async-await 没有完成该工作.
Trying to perform setState after the value return from checkPermissions()
, however async-await didn't do the job.
我在这里找不到任何不正确的地方,您能指出我的错误吗?
FYI checkPermissions()
接受回调函数作为参数.
I can't spot anything incorrect here, can you point out my mistake?
FYI checkPermissions()
accept a callback function as parameter.
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)
Check Permissions Code (Android)
@ReactMethod
public void checkPermissions(Promise promise) {
ReactContext reactContext = getReactApplicationContext();
NotificationManagerCompat managerCompat = NotificationManagerCompat.from(reactContext);
promise.resolve(managerCompat.areNotificationsEnabled());
}
解决方案尝试但失败了:
仅打印Run first
,不打印Run after
.
Solution tried but failed:
Only Run first
is printed out, Run after
does not.
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
一个承诺,不想传递回调.
You can only await
a promise, you don't want to pass a callback.
这篇关于在“等待"方法完成之前执行的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文