【问题标题】:React native manually rejecting a promise反应原生手动拒绝承诺
【发布时间】:2017-07-16 05:43:52
【问题描述】:

我基本上是在尝试将 React Native GPS 功能包装到 Promise 中。 当我到达navigator.geolocation.getCurrentPosition 的失败回调时,我想手动拒绝一个 Promise。

这里是相关代码:

var p = new Promise();

navigator.geolocation.getCurrentPosition(
     (position) => { ... all good here ... },
     (error) => {
         // trying to reject manually a Promise
         p.reject(error);
     }
);

问题:

  1. 如果我没有在 Promise 参数中传递任何函数,我会在第一行收到 not a function 错误
  2. 如果我传递一个函数,我会得到undefined is not a function evaluating p.reject

【问题讨论】:

    标签: react-native promise


    【解决方案1】:

    我将 Promise 与类似 Angular 的延迟承诺混淆了。

    一种可行的方法是将 GPS 功能包装到 Promise 中,如下所示:

    return new Promise(function(resolve, reject) {
       navigator.geolocation.getCurrentPosition(
          (position) => {
             resolve('All good');
          },
          (error) => {
             reject(error);
          }
       );
    });
    

    【讨论】:

    • Promisification 将简化 - 可能就像 navigator.geolocation.getCurrentPositionAsync = () => new Promise(navigator.geolocation.getCurrentPosition.bind(navigator.geolocation)); 一样简单
    猜你喜欢
    • 2018-04-19
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 2020-10-09
    相关资源
    最近更新 更多