使用管道从异步等待https请求构建文件

时间:2018-08-28 18:07:27

标签: javascript node.js rest

在文档和一天的研究之后,我试图使用管道来组装由API调用返回的Excel电子表格。我已经保存它,但是文件已损坏:

async function getWeeklyReport(queryString) {
return new Promise((resolve, reject) => {
request({
  url: 'https://reports.myApi.com/ReportCenter/Bookings',
  qs: queryString,
  headers: {
    'Content-Type': 'application/json',
    'Accept': 'application/json',
    'Authorization': 'Basic ' + new Buffer(process.env.apiEmail + ':' + process.env.apiPassword, 'utf8').toString('base64')
  }
}, (error, response, body) => {
  if (error) {
    reject(error);
  } else {
    if (response.statusCode === 200) {
      resolve(body);
    } else if (response.statusCode === 409) {
      setTimeout(() => {
        resolve(getWeeklyReport(queryString));
      }, response.headers['Retry-After'] * 1000);
    } else {
      reject(response);
    }
  }
}).pipe(fs.createWriteStream('test3.xlsm'));

}); }

我在这里做错了什么? test3已创建,但文件已损坏。谢谢!

1 个答案:

答案 0 :(得分:1)

官方<div class="container"> <div class="row"> <div class="col-sm-2"> <span class="badge badge-info badge-pill">2</span> </div> <div class="col-sm-10"> <p>short text to write.</p> </div> </div> </div> 消除了对模板承诺构建器的需求。

它要么是承诺控制流,要么是流。使用promise可以立即获得完整的响应,因此不需要流。也可以一次编写:

request-promise