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

标签 javascript node.js asynchronous

我正在使用一个 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/

相关文章:

javascript - 如何通过自定义下拉菜单获得自动完成功能?

javascript - 为什么jQuery会滑下来破坏我在Chrome中的嵌入式YouTube播放器?

node.js - ensureIndex 请求回调

node.js - 如何让聊天机器人(机器人框架)将附件从任何文件夹发送给用户(NodeJS)?

javascript - 如何向在socket.io中的不同选项卡或浏览器中打开的同一用户发出事件?

javascript - 如何避免由于 Ext Direct 和动态语言环境加载而导致的嵌套异步回调?

ios - 在开始新的异步操作之前,快速等待现有的异步操作完成

javascript - For 循环在检测到非字母字符时会创建无限循环

javascript - 其他 .js 文件无法访问 jQuery

javascript - 处理 django session 中的异步 ajax 调用