gpt4 book ai didi

node.js - Node js从http get异步函数返回未定义的值

转载 作者:太空宇宙 更新时间:2023-11-04 03:03:04 25 4
gpt4 key购买 nike

我正在尝试从异步函数获取http get 响应。但是,函数内的值正在显示,但返回值未定义。

即使 promise 没有未定义的值

请找到下面的代码

'use strict';
const express = require('express');
var request = require('request');
var https = require('https');

async function getCurrencies() {
let response;
try {


var getOptions = {
url: 'http://localhost:3000/api/currency',
method: 'GET',
headers: {
'Content-Type': 'application/json'
},
json:true
};

await request(getOptions, function (err, res, body) {

if (res && (res.statusCode === 200 || res.statusCode === 201)) {
console.log(' response ', res.body.rates.INR);

return res.body;
} else {
console.log('error body ', body);

}
});

} catch (error) {
console.log(" error pulling ", error);
process.exit();
}

}

var tt = getCurrencies().then(function(value) {
console.log(' tt values ',value);

}
);

下面是日志

 tt values  undefined
response 64.945

最佳答案

我会重写做这样的事情:

function getCurrencies() {

return new Promise((resolve, reject) => {
try {

var getOptions = {
url: 'http://localhost:3000/api/currency',
method: 'GET',
headers: {
'Content-Type': 'application/json'
},
json:true
};

request(getOptions, function (err, res, body) {

if (res && (res.statusCode === 200 || res.statusCode === 201)) {
console.log(' response ', res.body.rates.INR);
resolve(res.body);
} else {
console.log('error body ', body);
reject(new Error('Error body: ' + JSON.stringify(body)));
}
});

} catch (error) {
console.log(" error pulling ", error);
process.exit();
}
});
}

getCurrencies().then(function(value) {
console.log(' tt values ',value);
});

您还可以做一些更紧凑的事情:

const rp = require('request-promise');
function getCurrencies() {

var getOptions = {
url: 'http://localhost:3000/api/currency',
method: 'GET',
headers: {
'Content-Type': 'application/json'
},
json:true,
resolveWithFullResponse: true
};

return rp(getOptions).then((response) => {
return response.body;
});
}

getCurrencies().then(function(value) {
console.log(' tt values ',value);
}).catch ((err) => {
console.error('An error happened: ' + err);
});

关于node.js - Node js从http get异步函数返回未定义的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49214073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com