【问题标题】:How to return the value of body inside a promise如何在promise中返回body的值
【发布时间】:2020-12-16 13:58:21
【问题描述】:

我正在尝试在如下所示的 Promise 主体中获取值(这是图像的二进制数据)。有没有办法把二进制数据转成base64编码?

"Promise"{
"IncomingMessage"{
    "_readableState":"ReadableState"{...
    },
    "readable":false,
    "_events":[...
    ]{...
    },
    "_eventsCount":4,
    "_maxListeners":"undefined",
    "socket":"TLSSocket"{...
    },
    "connection":"TLSSocket"{...
    },
    "httpVersionMajor":1,
    "httpVersionMinor":1,
    "httpVersion":"1.1",
    "complete":true,
    "headers":{...
    },
    "rawHeaders":[...
    ],
    "trailers":{...
    },
    "rawTrailers":[...
    ],
    "aborted":false,
    "upgrade":false,
    "url":"",
    "method":null,
    "statusCode":200,
    "statusMessage":"OK",
    "client":"TLSSocket"{...
    },
    "_consuming":true,
    "_dumped":false,
    "req":"ClientRequest"{...
    },
    "request":"Request"{...
    },
    "toJSON":[...
    ],
    "caseless":"Caseless"{...
    },
    "body": //binary values here

现在,访问它们的代码是 console.log(getto) 在异步函数中

async function getMedia(imgMsgUrl, auth) {
const getImage = {
    url: imgMsgUrl,
    oauth: auth,
};
var getto = get(getImage);
await getto;
console.log(getto);
};

如何通过修改异步函数内的代码轻松访问正文?以及如何将其转为 base64 编码?

【问题讨论】:

  • 这能回答你的问题吗? How to do Base64 encoding in node.js?
  • 不,它没有。因为我是先尝试访问“body”的值,不知道怎么弄,那么后面会转成base64。谢谢你的建议。

标签: javascript node.js json twitter request


【解决方案1】:

我让它工作了。这是代码。

async function getMedia(imgMsgUrl, auth) {
const getImage = {
    url: imgMsgUrl,
    oauth: auth,
};
var getto = get(getImage).then(function(response) {
    let buffer = Buffer.from(response.body);
    let base64 = buffer.toString('base64');
    console.log(base64);
});
await getto;
};

【讨论】:

    【解决方案2】:

    由于get(getImage) 的结果是一个承诺,因此您不能像访问变量那样访问该值。 您只能使用 await 在异步函数中获取结果(就像您在上面所做的那样)或在传递给 Promise.then() 的回调函数中执行您想要的任何操作。

    function getMedia(imgMsgUrl, auth) {
      const getImage = {   
        url: imgMsgUrl,
        oauth: auth,
      };
      var getto = get(getImage);
      getto.then(result => {
        doSomething(result)
      });
    };
    

    【讨论】:

    • 谢谢,这很有用。我发布了自己的答案。
    猜你喜欢
    • 2020-10-26
    • 2017-12-20
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 2020-05-26
    相关资源
    最近更新 更多