我使用以下代码示例来调用返回访问 token 的 API。
var responsedata = '';
unirest.post('http://sandbox.com/api/getToken')
.headers({'Content-Type': 'application/x-www-form-urlencoded'})
.send('apiKey=xewsdw232')
.send('username=theuser')
.end(function (response) {
console.log(response.body);
responsedata = response.body;
});
console.log(responsedata);
Response
{ data: { token: 'JhbGciOiJIUzI1NiJ9',transID:'00582',errorCode: '00',errorMessage: '' } }
我确实收到了登录到控制台的响应,但无法将其分配给一个变量,以便我可以在调用函数之外使用它。我正在努力理解回调在 javascript 中的工作原理。
最佳答案
HTTP 请求本质上是异步的。您不会立即得到响应,这意味着 javascript 不会等待响应,而是继续执行,并且每当返回响应时,就会调用回调。
如果您想返回此响应,请将此代码封装在函数中并返回已解决的 promise 。
function getToken() {
return new Promise((resolve, reject) => {
unirest.post('http://sandbox.com/api/getToken')
.headers({
'Content-Type': 'application/x-www-form-urlencoded'
})
.send('apiKey=xewsdw232')
.send('username=theuser')
.end(function (response) {
if (response.error) {
return reject(response.error)
}
return resolve(response.body);
});
})
}
getToken().then((body) => console.log("success", body)).catch((error) =>
console.log("error", error))
关于javascript - 如何从 unirest Nodejs POST 调用获取响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53915088/