【发布时间】:2018-01-11 00:28:07
【问题描述】:
我正在使用一个 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 *****
我该如何解决这个问题?任何建议或建议都非常感谢。
【问题讨论】:
-
“将异步内容转换为同步”在单线程引擎上 = 非常糟糕的主意。拥抱异步并学习如何处理它 = 非常好的主意。
标签: javascript node.js asynchronous