我正在调用此代码:
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
。{。}
我该怎么做才能得到合适的物品?
答案 0 :(得分:1)
这里有几个选项:
坚持你已经做过的事情。
function main() {
Permissions.check('photo')
.then(response => {
...
});
}
main();
如果你想做let result = Permissions.check()
,其中Permissions.check()
返回一个承诺,你实际上需要(a)使用await
关键字和(b)放let result
1}}语句在async
函数内。
async function main() {
let result = await Permissions.check('photo');
}
main();
我希望这有帮助!
答案 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; // ...
});
坚持你的第一个解决方案。