调整反应本机代码以使用promise

时间:2018-03-20 21:12:37

标签: react-native promise

我正在学习React Native,我正在查找如何使用API​​调用创建一个promise链:https://facebook.github.io/react-native/docs/network.html#handling-the-response。 在查看如何获取用户权限时,我查看了文档页面(https://facebook.github.io/react-native/docs/permissionsandroid.html),并想知道是否可以在此处应用promise概念以使其成为一点

我的主要问题是:promises如何改进功能(如果有的话)以及使代码适应使用promises的最佳方法是什么?

以下是一些其他代码供我参考:

async requestLocationPermission() {
    const chckLocationPermission = PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION);
        if (chckLocationPermission === PermissionsAndroid.RESULTS.GRANTED) {
            console.log("You've access for the location");
        } else {
            try {
                const granted = await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
                    {
                        'title': 'This App required Location permission',
                        'message': 'We required Location permission in order to get device location ' +
                            'Please grant us.'
                    }
                )
                if (granted === PermissionsAndroid.RESULTS.GRANTED) {
                    console.log("You've access for the location");
                } else {
                    console.log("You don't have access for the location");
                }
            } catch (err) {
                console.log(err)
            }
        }
    };

2 个答案:

答案 0 :(得分:1)

简短的回答是肯定的 如果您需要API请求中的数据,则需要使用promises。 有关您需要使用承诺的更多信息,您希望了解有关call stack的更多信息。

我认为存在一个小小的混淆(这很常见),但您链接的代码也使用了承诺。
Async/Await是一种新的JavaScript功能,可以更轻松地编写承诺。

您可以通过多种方式在JavaScript中编写承诺,例如FetchPromiseAsync/Await。更不用说像AngularJS这样的库有自己的实现。
我建议先研究一下Call Stack,然后再去那里。

答案 1 :(得分:0)

简单地:

  • 您正在使用async await编写更清晰的代码,而不是then()catch()等方法
  • 如果您有其他编程语言知识,可能会错过try / catch块。它允许你写同步&同一块中的异步方法。

个人推荐你应该熟悉callbacks => promises => generators =>异步等待(按顺序学习)。实际上,您决定使用哪一种最适合您的目的。我建议看一下关于这些主题的非常详细的指南(他实际上只为这些主题写了一本书xd)You Don't Know JS: Async & Performance