Я использую модуль node-fetch для выполнения вызовов API. У меня есть функция, которая делает все вызовы API. И из этой функции я возвращаю код состояния и тело ответа. Следующий код приводит к пустому телу -
function makeRequest (url,config) {
return fetch(url,config)
.then( (response) => {
return {
"status" : response.status,
"payload": response.text()
}
})
.catch( (error)=> {
console.log(error)
return {
"status": null,
"payload" : error.message
}
})
}
async function getDestinationToken() {
const config = {
method : "POST",
headers: {
'Authorization': 'Basic ' + Buffer.from(sDestCredentials).toString('base64')
},
body : data
}
const url = uaa_service.credentials.url
console.log('Getting access Token')
let response = await makeRequest(url,config)
console.log("Response from token "+ response)
}
getDestinationToken()
Как я понимаю, response.text () возвращает обещание. В getDestinationToken () я жду его выполнения. Итак, почему это не работает? Вместо этого он печатает пустое тело следующим образом -
{
"status" : 200,
"payload": {}
}
Однако, если я не верну объект из функции, как показано ниже, код, похоже, будет работать.
function makeRequest (url,config) {
return fetch(url,config)
.then( (response) => {
return response.text()
})
.catch( (error)=> {
console.log(error)
return {
"status": null,
"payload" : error.message
}
})
}
В приведенном выше случае я вижу полезную нагрузку ответа. Однако я не могу использовать вышеупомянутый метод, потому что мне нужен также response.status в вызывающей функции.
Как разрешить это вложенное обещание?