gpt4 book ai didi

javascript - 在 Node js 中将异步函数转换为同步函数?

转载 作者:太空宇宙 更新时间:2023-11-04 02:52:37 24 4
gpt4 key购买 nike

我正在使用一个 API,它希望我传递卡的前四位数字,然后它会返回卡所在国家/地区。现在,这是我的问题。事实证明,我调用的函数是异步的,当我尝试返回国家/地区时,它实际上在异步调用完全执行之前就转到了返回值。我希望调用是同步的,这意味着我不希望函数返回默认数据并等待 API 的实际响应。这是我到目前为止所尝试的。我实际上使用 console.log() 语句来解决整个问题。

module.exports = {
bvncheck: function (cardnum) {
console.log("cardnumber", cardnum);
flutterwave.BIN.check(cardnum, function (req, res) {
var country = res.body.data.country;
console.log("country", country);
return country;
});
}


};

app.post('/checkcardbin', function (req, res) {
var cardnumber = req.body.cardnumber;

//var r = fd.bvncheck(cardnumber);

var r = fd.bvncheck(cardnumber);
console.log("result", r);
});

我期望按以下顺序输出以下内容 -

1. cardnumber *****
2. country *****
3. result ******

但实际上,它按以下顺序返回我,并且由于异步性质,我得到的结果是未定义的,因为数据是在函数实际执行完成之前返回的。

1. cardnumber *****
2. result ******
3. country *****

如何解决这个问题?非常感谢任何建议或建议。

最佳答案

我必须通过包含回调来更改您的模块。这样fd.bvncheck就会等待回调。

module.exports = {
bvncheck: function (cardnum, callback) {
console.log("cardnumber", cardnum);
flutterwave.BIN.check(cardnum, function (req, res) {
var country = res.body.data.country;
console.log("country", country);
callback(country);
});
}
}
app.post('/checkcardbin', function (req, res) {
var cardnumber = req.body.cardnumber;

//var r = fd.bvncheck(cardnumber);

fd.bvncheck(cardnumber, function(r) {
console.log("result", r);
});

});

关于javascript - 在 Node js 中将异步函数转换为同步函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45483545/

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