具有异步/等待的NodeJS导出模块

时间:2017-07-11 21:51:46

标签: javascript node.js asynchronous npm async-await

我正在尝试将一些名为api.js的文件中的函数导出到另一个带有NodeJS的文件中。这些函数是异步的,因为它们是http请求。我正在尝试使用await/async个关键字。但是,我似乎无法让它发挥作用。我的代码如下。

//api.js
import request from 'request';
const baseRequest = request.defaults({
  method: 'GET',
  headers: {…}
});

export const api = {
  async getDeviceByID(deviceID) {
    return await new Promise((resolve, reject) => {
      baseRequest(`…/${deviceID}`, (err, res, body) => {
        if (err !== null) return reject(err);
        let json = JSON.parse(body);
        resolve(json);
      });
    });
  },
  async getDevices() {
    return await new Promise((resolve, reject) => {
      baseRequest(`…`, (err, res, body) => {
        if (err !== null) return reject(err);
        let json = JSON.parse(body);
        resolve(json);
      });
    });
  }
};

我在这个文件中调用了api.getDeviceByID。但是,它将请求对象作为promise的结果返回,而不是来自http请求的有效负载。我很确定我只是在错误的地方回来了。有关代码改进的任何建议都表示赞赏。

//device.js
import { api } from './api';

api.getDeviceByID(this.deviceID).then((response) => {
  console.log(response);
});
.
.
.

我将react 15.5.4react-scripts 1.0.7一起使用。 Mac OS X 10.12.5 node v7.2.1

0 个答案:

没有答案