gpt4 book ai didi

javascript - 从异步函数请求结果

转载 作者:行者123 更新时间:2023-12-02 22:38:28 24 4
gpt4 key购买 nike

我需要变量“结果”的值进行比较。我在获取此“结果”值时遇到问题。

有人知道怎么解决吗?

**我使用节点来创建 REST 应用程序,我需要它来生成我的 GET 方法

async function get(req, res, next) {
var result = 0;
try {
const context = {};
const login = {};
login.user = req.params.user, 100;
login.pass = req.params.pass, 200;

var optionsgetmsg = {
host: 'URL', // here only the domain name
// (no http/https !)

path: '/controller/verifica.asp?a=' + login.user + '&b=' + login.pass, // the rest of the url with parameters if needed
method: 'GET' // do GET
};


var reqGet = https.request(optionsgetmsg, function (res) {

res.on('data', function (d) {
jsonResponse = JSON.parse(d);
result = jsonResponse.message;
});

});
reqGet.end();
reqGet.on('error', function (e) {
console.error(e);
});
context.id = parseInt(req.params.id, 10);
console.log(result);
//problem
if(result == "yes"){
const rows = await operadores.find(context);

if (req.params.id) {
if (rows.length === 1) {
res.status(200).json(rows[0]);
} else {
res.status(404).end();
}
} else {
res.status(200).json(rows);
}
}
}

最佳答案

您可以使用执行 HTTP 请求并支持 Promise 的库,例如 axios或者重构当前的 https.request 并将其转换为 Promise,这是一个示例:

function makeRequest({ user, password }) {
return new Promise((resolve, reject) => {
const options = {
host: 'URL',
path: `/controller/verifica.asp?a=${encodeURIComponent(user)}&b=${encodeURIComponent(pass)}`
method: 'GET'
};
const reqGet = https.request(options, function (res) {
res.on('data', function (d) {
result = JSON.parse(d);
resolve(result.message);
});

});
reqGet.on('error', function (e) {
reject(e);
});
reqGet.end();
});
}

然后你可以简单地这样做:

const result = await makeRequest(req.params);

我使用了一些你可能不熟悉的概念,template literalobject destructuring

关于javascript - 从异步函数请求结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58664390/

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