【问题标题】:Getting the Axios response from inside the pipe function in javascript从javascript中的管道函数内部获取Axios响应
【发布时间】:2020-08-28 23:00:17
【问题描述】:

您好,现在我正在尝试通过 API 将媒体上传到 Twitter,为此我需要一个来自先前 axios 调用的值。

这是我启动媒体上传的 API 调用:

async function uploadMediaInit(fd) {
  var fHeader = fd.getHeaders();
  return fd.pipe(concat((data) => {
    axios({
      method : 'post',
      url : 'https://upload.twitter.com/1.1/media/upload.json', 
      data,
      
      headers: {
        'content-type' : fHeader['content-type'],
        Authorization : getAuthorization('POST','https://upload.twitter.com/1.1/media/upload.json',{},"top-secret","top-secret")
      }
    })
    
  }))}

类似“response = await uploadMediaInit(exampleFormData)”的东西返回一个 ConcatStream 对象。
如何获取 axios 响应?

【问题讨论】:

    标签: javascript axios


    【解决方案1】:

    fd.pipe 方法周围包裹一个Promise 并从函数中返回它。这样,您就可以在您的 axios 请求完成时解决该承诺。

    concat函数内部使用async / await等待axios请求得到响应。然后使用从请求中获得的响应来解决承诺,您的值将在函数之外可用。

    function uploadMediaInit(fd) {
      var fHeader = fd.getHeaders();
      return new Promise(resolve => {
        fd.pipe(concat(async (data) => {
          const response = await axios({
            method: 'post',
            url: 'https://upload.twitter.com/1.1/media/upload.json',
            data,
            headers: {
              'content-type': fHeader['content-type'],
              Authorization: getAuthorization('POST', 'https://upload.twitter.com/1.1/media/upload.json', {}, "top-secret", "top-secret")
            }
          });
          resolve(response);
        }));
      });
    }
    

    【讨论】:

      猜你喜欢
      • 2020-03-22
      • 2019-11-26
      • 2020-08-10
      • 1970-01-01
      • 2023-03-25
      • 2018-11-14
      • 2017-03-28
      • 2019-12-02
      • 2022-10-19
      相关资源
      最近更新 更多