在异步等待中返回挂起的承诺

时间:2018-08-07 17:52:07

标签: javascript ecmascript-6 async-await es6-promise

我正在学习使用异步/等待,并且在尝试提出api请求来设置我的twilio设备时遇到问题。给定以下代码块,当我调用device()时,收到以下错误消息:

Uncaught 
TwilioException {message: "Capability token is not valid or missing."}
message
:
"Capability token is not valid or missing."
__proto__
:
Object

我认为这是由于device函数中返回的json仍显示为未决。我该如何解决?我在做什么错?谢谢。

代码块:

import {Device} from 'twilio-client';

const api = async () => {
  try {
    const response = await fetch('/api/twilio');
    const json = await response.json();
    if (response.status === 403) {
      twilioConnectionFailure('Twilio has not been purchased.');
    }
    return json;
  } catch (error) {
    console.log(`Connection failed: ${error.message}`);
    throw Error(error.message);
  }
};

const device = () => {
  const json = api();
  Device.setup(json.token);
  return Device;
};

export default device;

1 个答案:

答案 0 :(得分:2)

api函数仍然是异步的,并返回一个诺言-您需要等待它:

export default async function device() {
  const json = await api();
//             ^^^^^
  Device.setup(json.token);
  return Device;
}