在javascript中从管道函数内部获取Axios响应



你好,现在我正在尝试通过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=wait uploadMediaInit(exampleFormData(";返回一个ConcatStream对象
如何获取axios响应?

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

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

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);
}));
});
}

最新更新