如何修复一个javascript async fn包装一个跳到底部返回值的.then回调函数?,也使用'react-native-permissions'

How to fix a javascript async fn wrapping a .then callback function that skips to bottom return value?, using 'react-native-permissions' as well

提问人:dark stack 提问时间:7/7/2023 更新时间:7/7/2023 访问量:33

问:

我的异步函数看起来像

import { PERMISSIONS, RESULTS, checkMultiple } from 'react-native-permissions';
import { Platform } from 'react-native';
  const checkPermissions = async (): boolean => {
    console.log('Platform.OS', Platform.OS)
    if (Platform.OS === 'ios') {
      checkMultiple([
        PERMISSIONS.IOS.LOCATION_ALWAYS,
        PERMISSIONS.IOS.MOTION,
      ]).then((status) => {
        if (
          status[PERMISSIONS.IOS.LOCATION_ALWAYS] === RESULTS.GRANTED &&
          status[PERMISSIONS.IOS.MOTION] === RESULTS.GRANTED
        ) {
          console.log('permissions allgood');
          return true;
        } else {
          console.log('PERMISSIONS are false.');
          return false;
        }
      });
    } else if (Platform.OS === 'android') {
      checkMultiple([
        PERMISSIONS.ANDROID.ACCESS_BACKGROUND_LOCATION,
        PERMISSIONS.ANDROID.ACTIVITY_RECOGNITION,
      ]).then((status) => {
        if (
          String(status[PERMISSIONS.ANDROID.ACCESS_BACKGROUND_LOCATION]) ===
            RESULTS.GRANTED &&
          String(status[PERMISSIONS.ANDROID.ACTIVITY_RECOGNITION]) ===
            RESULTS.GRANTED
        ) {
          console.log('permissions allgood');
          return true;
        } else {
          console.log('PERMISSIONS are false.');
          return false;
        }
      });
    }
    return 'why';
  };

    const permissionsOn = checkPermissions();
    console.log('permissionsOn',permissionsOn)

结果是: LOG Platform.OS ios LOG permissionsAreON before {“_h”: 0, “_i”: 1, “_j”: “why”, “_k”: null}//'why' LOG 权限 allgood

那么如何格式化包装 fn.then() 的异步函数并返回结果呢?

javascript react-native promise 回调 权限

评论

0赞 Jaromanda X 7/7/2023
既然你为什么首先使用而不是 - 还要注意,异步函数总是返回一个checkPermissions = async.thenawaitPromise
0赞 Pointy 7/7/2023
拜托,拜托,不要混用代码,如果可以的话(而且你几乎总是可以)。asyncawait.then()
0赞 Jaromanda X 7/7/2023
一个简单的修复... 'return checkMultiple([

答: 暂无答案