javascript JS:如何让我的代码等待这个函数返回?[duplicate]

nbnkbykc  于 2023-01-07  发布在  Java
关注(0)|答案(2)|浏览(223)
    • 此问题在此处已有答案**:

Async method not waiting for a function - VUE(2个答案)
20小时前关门了。
我的React Native应用程序中有以下代码,用于检查Android上的摄像头是否被授予权限:

function hasAndroidPermission() {
    checkPermission('camera')
        .then(res => {
            if (res === RESULTS.DENIED) {
                requestPermission('camera')
                    .then(res => {
                        if (res === RESULTS.DENIED) {
                            return false
                        } else {
                            return true
                        }
                    })
                    .catch(err => {
                        // console.log(err)
                    })
            } else {
                return true
            }
        })
        .catch(err => {
            // console.log(err)
        })
}

我想根据hasAndroidPermission()的结果执行一些其他的代码。我尝试了这个(在一个异步函数中):

let androidPermission = await hasAndroidPermission()
if (androidPermission) ...

代码在hasAndroidPermission()返回之前执行了if块。我如何让它等待?

wooyq4lh

wooyq4lh1#

您应该使用async/await并使hasAndroidPermission成为一个异步函数:

async function hasAndroidPermission() {
    const res = await checkPermission('camera')
    if (res === RESULTS.DENIED) {
        const res = await requestPermission('camera')
        if (res === RESULTS.DENIED) {
            return false
        } else {
            return true
        }
    } else {
        return true
    }
}
osh3o9ms

osh3o9ms2#

checkPermission()requestPermission()调用之前缺少return语句

相关问题