调用异步函数返回带有属性名称数字的Promise对象

时间:2017-08-29 17:08:38

标签: javascript react-native es6-promise

我正在调用此代码:

Permissions.check('photo')
      .then(response => {
        ...
      });

这里我可以使用响应对象来检查值 但是我想把它称之为:

async function test() {
  let test = await Permissions.check('photo');
  return test;
}
...
let result = test();

但这会让我看起来像这样的Promise对象:

Promise {_40: 0, _65: 0, _55: null, _72: null}

我通常在response获得的价值result._55。{。} 我该怎么做才能得到合适的物品?

2 个答案:

答案 0 :(得分:1)

这里有几个选项:

  1. 坚持你已经做过的事情。

    function main() {
      Permissions.check('photo')
        .then(response => {
          ...
        });
    }
    main();
    
  2. 如果你想做let result = Permissions.check(),其中Permissions.check()返回一个承诺,你实际上需要(a)使用await关键字和(b)放let result 1}}语句在async函数内。

    async function main() {
      let result = await Permissions.check('photo');
    }
    main();
    
  3. 我希望这有帮助!

答案 1 :(得分:0)

您是否希望能够以这样的同步方式使用test

let result = test();
result._55; // ...

我很抱歉让你失望,但那不行。

异步函数不会将异步操作转换为同步操作。异步函数返回一个promise,它将值包装在return ...语句中。这意味着您的test功能相当于:

function test() {
  return Permissions.check('photo').then(result => result);
}

...这是毫无意义的,因为你现在必须像这样使用它:

test().then(response => {
  response._55; // ...
});

坚持你的第一个解决方案。